Buenas noches a todos!!
He preguntado en varias ocasiones y aunque todos han sido muy amables en responder, hasta ahora no he logrado realizar lo que busco.
Necesito incrementar la cantidad en un array cuando ese id exista e insertar una nueva array dentro de la array madre, con todos sus campos, cuando no exista.
El problema que se me plantea es ¿cómo calcular la clave $key del array pues a medida que hayan algunas más arrays irá incrementándose?
Pongo el código que estoy usando
Código PHP:
Ver originalif(!empty($_SESSION['carrito'])) {
foreach ($_SESSION['carrito'] as $key => $value)
{
echo "1era Iteraccion, KEY ES: ".$key." => VALUE ES: ".$value['idpie']."<br />";
if(in_array($idpie, $_SESSION['carrito'][$key])){ echo "La clave (key) es: ".$key."<br />";
$cant = $_SESSION['carrito'][$key]['cantidad'];
$cant++;
$_SESSION['carrito'][$key]['cantidad'] = $cant;
$_SESSION['carrito'][$key]['coste'] = $cant * $_SESSION['carrito'][$key]['precio'] ;
}
else
{
echo "Estoy en array_push no encuentra, clave $key y idpie: $idpie <br />";
}
}
}
else{
}
Por si sirve de algo, funcionar funciona, con el primer registro va super-bien, incrementa y tal, cuando inserto el segundo, perfecto.
Pego lo que pasa:
Código HTML:
Ver original1era Iteraccion, KEY ES: 0 => VALUE ES: 28
Estoy en array_push no encuentra, clave 0 y idpie: 27
SESSION[CARRITO] ESTABLECIDA
array (size=2)
0 =>
array (size=5)
'idpie' => string '28' (length=2)
'nompie' => string 'Muelle Helecoidal' (length=17)
'precio' => string '41.00' (length=5)
'cantidad' => int 3
'coste' => float 123
1 =>
array (size=5)
'idpie' => string '27' (length=2)
'nompie' => string 'Filtro Aceite No metálico' (length=26)
'precio' => string '6.00' (length=4)
'cantidad' => string '1' (length=1)
'coste' => float 6
Ahora, si el segundo lo vuelvo a meter, se incrementa la cantidad y se inserta una nueva array.
Pego lo que pasa:
Código HTML:
Ver original1era Iteraccion, KEY ES: 0 => VALUE ES: 28
Estoy en array_push no encuentra, clave 0 y idpie: 27
1era Iteraccion, KEY ES: 1 => VALUE ES: 27
La clave (key) es: 1
SESSION[CARRITO] ESTABLECIDA
array (size=3)
0 =>
array (size=5)
'idpie' => string '28' (length=2)
'nompie' => string 'Muelle Helecoidal' (length=17)
'precio' => string '41.00' (length=5)
'cantidad' => int 3
'coste' => float 123
1 =>
array (size=5)
'idpie' => string '27' (length=2)
'nompie' => string 'Filtro Aceite No metálico' (length=26)
'precio' => string '6.00' (length=4)
'cantidad' => int 2
'coste' => float 12
2 =>
array (size=5)
'idpie' => string '27' (length=2)
'nompie' => string 'Filtro Aceite No metálico' (length=26)
'precio' => string '6.00' (length=4)
'cantidad' => string '1' (length=1)
'coste' => float 6
Se ve claramente que es como si lo hubiera metido dos veces, en una incrementa la cantidad al cumplirse la condición "in_array()" y ejecuta el "else" porque parece que la Clave ($key) no se encuentra.
A ver si alguien es capaz de ayudarme de forma que lo pueda entender y solucionar, es decir, que me enseñe a "pescar este pez"
Muchas gracias