PHP - Iterar un array que no está ordenado de modo "normal"

   
Vista:
Imágen de perfil de Jhon

Iterar un array que no está ordenado de modo "normal"

Publicado por Jhon (16 intervenciones) el 24/06/2016 07:29:58
Cordial saludo:

Estoy haciendo un proyecto en el que utilizo un array de sesión (Es una especie de carrito de compra).
El caso es que este array contiene objetos de la clase producto con los atributos código, precio, cantidad, subtotal, sucursal y caducidad (Ya sé que es un poco raro pero es necesario).
Mi función para ir añadiendo productos esá así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function Agregar() {
    include_file("Producto", Config::CLASSES);//Incluye archivo desde la carpeta classes
    $codigo = filter_input(INPUT_POST, 'codigo');
    $caducidad = filter_input(INPUT_POST, 'caducidad');
    $precio = filter_input(INPUT_POST, 'precio');
    $cantidad = filter_input(INPUT_POST, 'cantidad');
    $sucursal = filter_input(INPUT_POST, 'idsucursal');
    $item = new producto();
    $item->set_codigo($codigo);
    $item->set_caducidad($caducidad);
    $item->set_cantidad($cantidad);
    $item->set_precio($precio);
    $item->set_sucursal($sucursal);
    $item->set_subtotal($precio, $cantidad);
    $_SESSION['carrito'][$codigo] = $item;
    Link::goLocation("Ventas");
}

Hasta ahí todo bien. Pero en esa página ventas me gustaría ir mostrando los productos que he ido añadiendo, usando una tabla.
la cosa es que si se fijan, la posición en el array la da la variable $codigo. Así que no sé cómo iterar el arreglo porque puedo tener por ejemplo un arreglo con posiciones 1, 3, 7 y que no haya 0,2,4,5,6.
¿Cómo podría hacerse? Estoy super verde con PHP.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Iterar un array que no está ordenado de modo "normal"

Publicado por kip (564 intervenciones) el 24/06/2016 09:01:23
Hola, podrias reorganizar el array creando nuevos indices pero manteniendo los valores, usa sort():

1
sort($array);

Para verificar que se haya ordenado y que los indices son otros, podrias hacer un var_dump().

Pruebalo y nos comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jhon

Iterar un array que no está ordenado de modo "normal"

Publicado por Jhon (16 intervenciones) el 24/06/2016 09:17:28
Pues sí, eso los ordena, muchas gracias. Pero igual tengo "huecos" en las posiciones.
¿Cómo podría iterar el array en una tabla de ese modo?
Te agradezco las indicaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Iterar un array que no está ordenado de modo "normal"

Publicado por kip (564 intervenciones) el 24/06/2016 09:24:20
La funcion sort(), te crea nuevos indices, partimos de este codigo:

1
2
3
4
5
6
7
8
9
10
11
<?php
$numbers=array(1=>4,4=>6,56=>2,3=>22,9=>11);
foreach ($numbers as $k => $v){
    echo 'Indice: '.$k. ' - Valor: '.$v.'<br>';
}
echo '<hr>';
sort($numbers);//ordeno y creo indices
foreach ($numbers as $k => $v){
    echo 'Indice: '.$k. ' - Valor: '.$v.'<br>';
}
?>

Resultado:
Screenshot_236

Como ves, ordeno y dio nuevos indices.

De esa forma podrás crear tu tabla iterando normalmente.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Jhon

Iterar un array que no está ordenado de modo "normal"

Publicado por Jhon (16 intervenciones) el 24/06/2016 09:29:03
Ah, ok. Creo que lo pillo. Voy a intentarlo.
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar