Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] duda con array

Estas en el tema de duda con array en el foro de PHP en Foros del Web. estimados tengo la siguiente duda: esto Código PHP: $carro = $_SESSION [ 'carrito' ];      $carro [ md5 ( $_POST [ 'id_cantidad' ])][ 'cantidad' ]= ...
  #1 (permalink)  
Antiguo 13/02/2014, 14:12
Avatar de estudioplateado  
Fecha de Ingreso: diciembre-2009
Mensajes: 71
Antigüedad: 14 años, 4 meses
Puntos: 2
Pregunta duda con array

estimados tengo la siguiente duda:

esto

Código PHP:
$carro=$_SESSION['carrito'];
    
$carro[md5($_POST['id_cantidad'])]['cantidad']=$canti;
    
$_SESSION['carrito']=$carro
es lo mismo que esto?

Código PHP:
$carro=array();
    
$carro[md5($_POST['id_cantidad'])]['cantidad']=$canti;
    
$_SESSION['carrito']=$carro
gracias!
  #2 (permalink)  
Antiguo 13/02/2014, 14:22
Avatar de 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

No es lo mismo ya que en el primer ejemplo lo que haces es pasar el contenido de $_SESSION['carrito'] a una variable $carro y añades un nuevo indice, en últimas es lo mismo que hacer esto:

Código PHP:
Ver original
  1. $_SESSION['carrito'][md5($_POST['id_cantidad'])]['cantidad'] = $canti;

Aunque claro solo si el indice md5($_POST['id_cantidad']) existe... en cuyo caso sería bueno hacer algo como

Código PHP:
Ver original
  1. $indice = md5($_POST['id_cantidad'])]['cantidad'] = $canti;
  2.  
  3. if( is_array( $_SESSION['carrito'][$indice] ) ) {
  4.     $_SESSION['carrito'][$indice]['cantidad'] = $canti;
  5. } else {
  6.     $_SESSION['carrito'][$indice] = array(
  7.         'cantidad' => $canti,
  8.     );
  9. }

Eso es con respecto al primer ejemplo, lo que haces con el segundo ejemplo es reemplazar siempre el contenido de $_SESSION['carrito']... así que perderías todo el contenido previamente guardado a diferencia de el primer ejemplo que simplemente se añade un nuevo contenido preservando los datos anteriores...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 13/02/2014, 14:33
Avatar de estudioplateado  
Fecha de Ingreso: diciembre-2009
Mensajes: 71
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: duda con array

me quedó claro tu explicación en general


Cita:
Iniciado por jonni09lo Ver Mensaje

Eso es con respecto al primer ejemplo, lo que haces con el segundo ejemplo es reemplazar siempre el contenido de $_SESSION['carrito']... así que perderías todo el contenido previamente guardado a diferencia de el primer ejemplo que simplemente se añade un nuevo contenido preservando los datos anteriores...
bueno aca debo decirte que $_SESSION['carrito'] no trae contenido de antes ... por eso sospecho que se pùeda reemplazar con el segundo ejemplo ...

saludos
  #4 (permalink)  
Antiguo 13/02/2014, 14:39
Avatar de estudioplateado  
Fecha de Ingreso: diciembre-2009
Mensajes: 71
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: duda con array

Cita:
Iniciado por estudioplateado Ver Mensaje
me quedó claro tu explicación en general




bueno aca debo decirte que $_SESSION['carrito'] no trae contenido de antes ... por eso sospecho que se pùeda reemplazar con el segundo ejemplo ...

saludos
Bueno con mi respuesta me entró la duda si la sesion trae o no contenido, pongo el script completo

Código PHP:
if($_GET['modo']){
    
$carro=$_SESSION['carrito'];
}elseif(
$_POST['actualizar']){
    
//actualizo los datos relativos a la cantidad, si es que el usuario lo modificó.
    //la información que recibo aquí viene del formulario que tiene cada fila de la tabla.
    
$carro=$_SESSION['carrito'];
    
$carro[md5($_POST['id_cantidad'])]['cantidad']=$canti;
    
$_SESSION['carrito']=$carro;
}elseif(
$borrar){
    
//asigno a una variable la session carrito:
    
$carro=$_SESSION['carrito'];
    
//si el usu presionó para borrar un elemento, lo hago:
    
unset($carro[md5($borrar)]);
    
$_SESSION['carrito']=$carro;    
}else{
    
//asigno a una variable la session carrito:
    
$carro=$_SESSION['carrito'];
    
//conecto con el servidor:
    
$link=conectar($datos);
    
//traigo desde la base de datos el producto seleccionado por el cliente, en base a su id:
    
$sql="select * from productos2 where id=$id";
    
$res=mysql_fetch_array(consultas_basicas(1,$sql));
    
//ahora cargo en el array 'carro' los datos del producto:
    
$carro[md5($id)]=array('my_id'=>md5($id),'id'=>$res[0],'codigo'=>$res[1],'nombre'=>$res[2],'lista'=>$res[3],'contado'=>$res[4],'cantidad'=>$canti);
    
mysql_close();
    
//y vuelco ese array a la session:
    
$_SESSION['carrito']=$carro;

saludos!
  #5 (permalink)  
Antiguo 13/02/2014, 14:46
Avatar de 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.

Etiquetas: arrays, inicializar, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:39.