Claro, el "problema" del segundo ejemplo es que no puedes mantener más indices dentro de
$_SESSION['carrito']
, voy a ponerte ejemplo de resultados de usar ambas formas:
Código PHP:
Ver original$_SESSION['carrito'] = array();
$_POST['id_cantidad'] = 1;
$canti = 10;
$indice = md5($_POST['id_cantidad']);
if( is_array( $_SESSION['carrito'][$indice] ) ) { $_SESSION['carrito'][$indice]['cantidad'] = $canti;
} else {
$_SESSION['carrito'][$indice] = array( 'cantidad' => $canti,
);
}
$_POST['id_cantidad'] = 2;
$indice = md5($_POST['id_cantidad']);
if( is_array( $_SESSION['carrito'][$indice] ) ) { $_SESSION['carrito'][$indice]['cantidad'] = $canti;
} else {
$_SESSION['carrito'][$indice] = array( 'cantidad' => $canti,
);
}
echo "<pre>";
echo "</pre>";
El anterior ejemplo dará como resultado:
Código:
Array
(
[c4ca4238a0b923820dcc509a6f75849b] => Array
(
[cantidad] => 10
)
[c81e728d9d4c2f636f067f89cc14862c] => Array
(
[cantidad] => 10
)
)
Ahora bien probemos el segundo ejemplo:
Código PHP:
Ver original$_SESSION['carrito'] = array();
$_POST['id_cantidad'] = 1;
$canti = 10;
$carro[md5($_POST['id_cantidad'])]['cantidad'] = $canti; $_SESSION['carrito'] = $carro;
$_POST['id_cantidad'] = 2;
$carro[md5($_POST['id_cantidad'])]['cantidad'] = $canti; $_SESSION['carrito'] = $carro;
echo "<pre>";
echo "</pre>";
Y el contenido del carrito será:
Código:
Array
(
[c81e728d9d4c2f636f067f89cc14862c] => Array
(
[cantidad] => 10
)
)
Como ves no guarda el primer valor, ya que es reemplazado por el segundo.
Saludos