Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/02/2014, 14:46
Avatar de jonni09lo
jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: duda con array

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
  1. $_SESSION['carrito'] = array();
  2.  
  3. $_POST['id_cantidad'] = 1;
  4. $canti = 10;
  5.  
  6. $indice = md5($_POST['id_cantidad']);
  7.  
  8. if( is_array( $_SESSION['carrito'][$indice] ) ) {
  9.     $_SESSION['carrito'][$indice]['cantidad'] = $canti;
  10. } else {
  11.     $_SESSION['carrito'][$indice] = array(
  12.         'cantidad' => $canti,
  13.     );
  14. }
  15.  
  16. $_POST['id_cantidad'] = 2;
  17.  
  18. $indice = md5($_POST['id_cantidad']);
  19.  
  20. if( is_array( $_SESSION['carrito'][$indice] ) ) {
  21.     $_SESSION['carrito'][$indice]['cantidad'] = $canti;
  22. } else {
  23.     $_SESSION['carrito'][$indice] = array(
  24.         'cantidad' => $canti,
  25.     );
  26. }
  27.  
  28. echo "<pre>";
  29. print_r($_SESSION['carrito']);
  30. 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
  1. $_SESSION['carrito'] = array();
  2.  
  3. $_POST['id_cantidad'] = 1;
  4. $canti = 10;
  5.  
  6. $carro = array();
  7. $carro[md5($_POST['id_cantidad'])]['cantidad'] = $canti;
  8. $_SESSION['carrito'] = $carro;
  9.  
  10. $_POST['id_cantidad'] = 2;
  11.  
  12. $carro = array();
  13. $carro[md5($_POST['id_cantidad'])]['cantidad'] = $canti;
  14. $_SESSION['carrito'] = $carro;
  15.  
  16. echo "<pre>";
  17. print_r($_SESSION['carrito']);
  18. 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
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.