Quote Originariamente inviata da boots Visualizza il messaggio
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); 
Ho seguito la tua logica adesso funziona.. Grazie mille