codice:
<?php
error_reporting (E_ALL); 
session_start();
function esiste($id_prodotto){
	$carrello=$_SESSION['prodotti'];
	$i=0;
	$flag = false;
	while ((count($carrello) > 0) && !$flag){
		$temp=array_shift($carrello);
		if ($temp['idprodotto'] == $id_prodotto)
			$flag = true;
		$i++;
	}
	$flag=array('esiste'=>$flag,'pos'=>$i-1);
	return $flag;
}
function Carrello($id_prodotto,$quantita) {
	if   (array_key_exists('prodotti',$_SESSION)){
		$flag=esiste($id_prodotto);
		if ($flag['esiste']){
 			$_SESSION['prodotti'][$flag['pos']]['quantità'] +=$quantita;
			echo "ID PRODOTTO ESISTENTE, QUANTITA' AGGIUNTA";
		} else {
			$temp=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
  			array_push($_SESSION['prodotti'],$temp);
		}
	} else {
  		$_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
	}
}


unset($_SESSION['prodotti']);
Carrello(1,2);
Carrello(2,4);
Carrello(3,4);
Carrello(1,2);
Carrello(3,4);

//unset($_SESSION['prodotti'][1]);
	/*--------------------------------------------------------- 
	Report Variabili
	-----------------------------------------------------------*/
	echo '<hr>';
	print '<pre>';
	print_r($_SESSION);
	print '</pre>';
	echo '<hr>';
?>