Foros del Web » Programando para Internet » PHP »

Recorriendo un arreglo global

Estas en el tema de Recorriendo un arreglo global en el foro de PHP en Foros del Web. Saludos foreros, mi cuestión es la siguiente: Decalro el siguiente arreglo como variable global: <? session_start(); $_SESSION['cesta']=array("nombre" =>"Este es el nombre", "codigo" => "Este es ...
  #1 (permalink)  
Antiguo 06/07/2004, 20:06
 
Fecha de Ingreso: enero-2002
Mensajes: 4.156
Antigüedad: 15 años, 10 meses
Puntos: 21
Recorriendo un arreglo global

Saludos foreros, mi cuestión es la siguiente:

Decalro el siguiente arreglo como variable global:

<? session_start();
$_SESSION['cesta']=array("nombre" =>"Este es el nombre", "codigo" => "Este es el código", "precio" => "Este es el precio","cantidad" => "Este es la cantidad","importe" => "Este es el importe");
?>

Y en la pagina donde lo recibo, lo hago de esta manera:

<? session_start();
$cesta=$_SESSION['cesta'];
?>

Ya he revisado y los datos si llagan sin problemas, ahora bien, deseo recorrer e imprimir el arreglo mediante un while:

while ($cesta) {
echo "Nombre: ".$cesta['nombre']."<br>";
echo "Código: ".$cesta['codigo']."<br>";
echo "Precio: ".$cesta['precio']."<br>";
echo "Cantidad: ".$cesta['cantidad']."<br>";
echo "Importe: ".$cesta['importe']."<hr>";
}

Pero me bota un ciclo infinito, me imagino que ha de ser muy sencillo pero la verdad mi experiencia en arreglos es medio limitada.

Agradeceré cualquier ayuda.

Saludos
  #2 (permalink)  
Antiguo 06/07/2004, 21:40
 
Fecha de Ingreso: marzo-2003
Mensajes: 74
Antigüedad: 14 años, 8 meses
Puntos: 0
No consideras que el while esta de mas? dado que al hacer $cesta['lo_que_sea'] estas recorriendo el arreglo?

Manthis.
  #3 (permalink)  
Antiguo 07/07/2004, 08:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En tal caso sería un foreach() pero aplicado a tu $_SESSION['cesta'] (si es que es un array bidimensional):

Código PHP:
<?
session_start
();
$cesta[0]['codigo'] ="bla";
$cesta[0]['precio'] ="100";
$cesta[0]['cantidad'] ="1";

$cesta[1]['codigo']="bla";
$cesta[1]['precio'] ="100";
$cesta[1]['cantidad'] ="1";

// etc ...

$_SESSION['cesta']=$cesta;
header ("Location: ver_cesta.php");
?>

ver_cesta.php
Código PHP:
<?
session_start
();
$cesta=$_SESSION['cesta'];

foreach(
$cesta as $item){
echo 
"Nombre: ".$item['nombre']."<br>";
echo 
"Código: ".$item['codigo']."<br>";
echo 
"Precio: ".$item['precio']."<br>";
echo 
"Cantidad: ".$item['cantidad']."<br>";
echo 
"Importe: ".$item['importe']."<hr>";
}
?>
Fijate que $_SESSION es un array .. pero lo que vas a usar en tu "cesta" es otro array (bidimensiona) .. en total tendrías un array "tridimensional" para $_SESSION que será la "variable de sesión que usaras como transporte".

Un saludo,

Última edición por Cluster; 07/07/2004 a las 09:01
  #4 (permalink)  
Antiguo 07/07/2004, 10:55
 
Fecha de Ingreso: enero-2002
Mensajes: 4.156
Antigüedad: 15 años, 10 meses
Puntos: 21
Hombre gracias Clustes y Manthis y amas o menos le voy entendiendoa esto, ahora bien y abusando de su ayuda, jiji

por ahi leí que cuando uno utiliza foreach no esta trabajando con el arreglo real, mi inquietud es: si deseo asignarvalores a elemntos del arreglo, lo puedo hacer dentro del ciclo foreach?

Saludos.
  #5 (permalink)  
Antiguo 07/07/2004, 13:03
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si miras el manual www.php.net/foreach veras que existe una sintaxis que te da el indice y el valor. Puedes usar el indice para modificar el elemento.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 07/07/2004, 20:19
 
Fecha de Ingreso: enero-2002
Mensajes: 4.156
Antigüedad: 15 años, 10 meses
Puntos: 21
Mil grácias amigos, ya logre llenar, leer y recorrer el arreglo, ahora solo me falta transportarlo como variable de sesion (casi nada verdad) jiji.

A punta de forzar al máximo a mis dos únicas neuronas (la floja y la tonta) creo ya haber logrado declarar, llenar y transportar apropiadamente el arreglo como variable de sesion (eso espero porque no lo he podido imprimir para revisar).

Sin embargo estpoy muy mareado al trabajar con un arreglo de 3 dimenciones, no logro imaginarmelo, y por eso recurro a ustedes a ver si me pueden orientar para imprimirlo y revisar si esta bien, he aquí lo que ya hice:

Inicio mi sesión y declaro la variable:

<? session_start();
$arreglo=array ("nombre","codigo","precio","cantidad","importe ");
$_SESSION['cesta']=$arreglo;
?>

Mas abjo hay un formulario para capturar los datos pero creo que lo puedo omitir aqui, vamos a ver la página donde recibo los datos y los guardo en la variable de sesión.

<? session_start(); //Retomo la sesión

//Recibo las variables del formulario
$nombre=$_POST['nombre'];
$codigo=$_POST['codigo'];
$precio=$_POST['precio'];
$cantidad=$_POST['cantidad'];
$importe=$precio*$cantidad;

//Asigno los datos al campo en la variable de sesión
$_SESSION['cesta'][]=array ("nombre"=>$nombre,"codigo"=>$codigo,"precio"=>$pr ecio,"cantidad"=>$cantidad,"importe"=>$importe);

//Aqui es donde deseo imprimir el contenido para revisarlo y es donde tengo el problema

foreach ($_SESSION['cesta'] as $value) {
echo "Nombre: ".$value['nombre']."<br>";
echo "Codigo: ".$value['codigo']."<br>";
echo "Precio: ".$value['precio']."<br>";
echo "Cantidad: ".$value['cantidad']."<br>";
echo "Importe: ".$value['importe']."<hr>";
$total=$total+$value['importe'];
}

Creo que le problema es enlos valores despues de "as" pero como les dijo aqui me quede (mas exactamente aqui me perdi).

Si alguien se apiada, agradeceré infinitamente su orientación.

Saludos.

Última edición por Elalux; 07/07/2004 a las 20:32
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 13:16.