
Originariamente inviata da
boots
Direi che il tuo ciclo for è sbagliato: quando trovi il prodotto devi uscire dal ciclo, altrimenti se ci sono altri elementi al passo successivo ti ritroverai sempre con $IDnonpresente a true. Stesso discorso se il prodotto si trova nelle posizioni > 0: il primo ciclo mette la variabile ad true. Cambia così:
Codice PHP:
$nonPresente = true;
for($row = 0; ....){
if ($IDprod == $prodottiPHPnew[$row]["IDprodotto"]) {
$prodottiPHPnew[$row]["quantita"]+=$qta;
$nonPresente = false;
break;
}
}
Una cosa carina, sarebbe di usare l'IDprodotto come chiave per il tuo array:
Codice PHP:
$prodottiPHPnew[$IDprod] = ['IDprodotto'=>$IDprod, 'qta'=>$qta];
così, al posto del for, ti basta solo verificare se esiste la chiave:
Codice PHP:
$prodottiPHPnew = json_decode($_COOKIE['acquisto'], true);
if(isset($prodottiPHPnew[$IDprod])){
$prodottiPHPnew[$IDprod]['qta'] += $qta;
}else{
$prodottiPHPnew[$IDprod] = ['IDprodotto'=>$IDprod, 'qta'=>$qta];
}
$prodottiJS = json_encode($prodottiPHPnew);