Foros del Web » Programando para Internet » PHP »

como hacer un foreach con varios arrays

Estas en el tema de como hacer un foreach con varios arrays en el foro de PHP en Foros del Web. como poner varios arrays en un foreach ?? foreach ($_POST['cantidad'] as $value && $_POST['material'] as $value2 ) { } de esa manera no me sale, ...
  #1 (permalink)  
Antiguo 19/03/2011, 07:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
como hacer un foreach con varios arrays

como poner varios arrays en un foreach ??

foreach ($_POST['cantidad'] as $value && $_POST['material'] as $value2 ) { }

de esa manera no me sale, alguien q me ayude? necesito los 2 al mismo tiempo para hacer una insercion dentro de los {}
  #2 (permalink)  
Antiguo 19/03/2011, 07:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: como hacer un foreach con varios arrays

No se puede hacer eso. Si los dos tienen la misma cantidad de datos, usa un for y llama los dos dentro del for, ejemplo
Código PHP:
Ver original
  1. <?php
  2. $arr1 = array('foo', 'bar', 'baz');
  3. $arr2 = array('candy', 'vegetable', 'fruits');
  4.  
  5. if(count($arr1) == count($arr2)){
  6.     for($i=0; $i<count($arr1); $i++){
  7.         echo $arr1[$i] . ' - ' . $arr2[$i] . '<br />';
  8.     }
  9. }else{
  10.     echo 'Error, los array no tienen la misma cantidad de valores';
  11. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 13/08/2012, 19:52
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: como hacer un foreach con varios arrays

Estuve buscando lo mismo y me encontré con este código:

Código PHP:
$a = array('a''b''c');
$b = array('A''B''C');
$c = array('1''2''3'); 

if ((
sizeOf($a) !== sizeOf($b)) || (sizeOf($b) !== sizeOf($c))){
  throw new 
Exception('Los tres arrays deben ser del mismo tamaño');
}
foreach (
$a as $key => $value){
  echo 
"{$a[$key]}{$b[$key]}{$c[$key]}\n";

No entiendo por qué funciona, pero funciona y da el resultado:

Código HTML:
aA1
bB2
cC3
¿Alguien me lo podría explicar?

Gracias.
  #4 (permalink)  
Antiguo 13/08/2012, 20:12
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 11 años, 8 meses
Puntos: 60
Respuesta: como hacer un foreach con varios arrays

Con los 3 array tienen la misma cantidad de elementos, el foreach() llama a un arreglo y como todos tienen el mismo "key" [0,1,2], puede llamarlos 1x1.

Hubiera dado el mismo resultado con un for como te dijeron arriba >:
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #5 (permalink)  
Antiguo 13/08/2012, 20:17
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: como hacer un foreach con varios arrays

Ok, es que leí muchos sitios y todos decían que no se podía hacer desde un foreach, excepto en rosettacode.org de donde saqué el código.

Ya me quedó claro, gracias tocayo.
  #6 (permalink)  
Antiguo 13/08/2012, 20:28
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: como hacer un foreach con varios arrays

es que si te fijas estas usando el foreach como abimaelrc utilizo el for, ya que en si no estas recorriendo los 3 array con el foreach sino que estas usando el indice que te va retornando para mostrar los datos, pero en si ambos dan resultados, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: arrays, foreach
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 19:51.