Foros del Web » Programando para Internet » PHP »

Foreach() en arrays multidimensionales

Estas en el tema de Foreach() en arrays multidimensionales en el foro de PHP en Foros del Web. Buenas gente, estaba recorriendo varios manuales de php (estudiando) cuando me econtre con la duda existencial de si la funcion "foreach()", funciona para arrays multidimensionales, ...
  #1 (permalink)  
Antiguo 21/07/2008, 18:13
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Foreach() en arrays multidimensionales

Buenas gente, estaba recorriendo varios manuales de php (estudiando) cuando me econtre con la duda existencial de si la funcion "foreach()", funciona para arrays multidimensionales, y como lo hace.

este es el codigo que yo tengo:
Código:
<title>AVER SI ANDA EL FOREACH</title>
<?php

$arreglo=array(
	"uno"=>array(
		"unoA"=>"1a",
		"unoB"=>"1b",
		"unoC"=>array(
			"unoC1"=>"1c1",
			"unoC2"=>"1c2",
		),
	),
	"dos"=>"2",
	"tres"=>array(
		"tresA"=>"3a",
	),
);

foreach($arreglo as $variable)
{
	echo $variable;
	echo "<br>";
}


?>
con lo cual me imprime lo siguiente:

Array
2
Array

Se que podria recorrerlo usando un bucle while o for, y las funciones "prev()" y "next()" (que todavia no las se usar XD). Pero quisiera saber como seria una correcta imprementacion de este bucle y, del "each()" tambien si es posible.

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 21/07/2008, 18:45
Avatar de _cx
_cx
 
Fecha de Ingreso: diciembre-2007
Ubicación: Montevideo, Uruguay
Mensajes: 70
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Foreach() en arrays multidimensionales

Código PHP:
<title>AVER SI ANDA EL FOREACH</title>
<?php

$arreglo
=array(
    
"uno"=>array(
        
"unoA"=>"1a",
        
"unoB"=>"1b",
        
"unoC"=>array(
            
"unoC1"=>"1c1",
            
"unoC2"=>"1c2",
        ),
    ),
    
"dos"=>"2",
    
"tres"=>array(
        
"tresA"=>"3a",
    ),
);

function 
recorrer($array)
{

foreach(
$array as $variable)
{
    if(
is_array($variable))
    {
        
recorrer($variable);
    }else{
        echo 
$variable;
        echo 
"<br />";
    }
    
}

}

recorrer($arreglo);

?>
una sencilla funcion para recorrer recursivamente un array, si el valor que obtenemos es array llamamos nuevamente a la funcion y asi sucesivamente.
espero que te sirva

saludos,
pablo
  #3 (permalink)  
Antiguo 22/07/2008, 05:10
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Foreach() en arrays multidimensionales

Sisi! de funcionar, funciona de diez, la duda que yo tenia era si el foreach automaticamente recorria los arrays multidimensionales, sin necesidad de otras cosas como este caso, la funcion recursiva.

Muchas gracias _CX.

Estuve intentando realizar la funcion de recorrer el array SIN recursividad.
Sensillamente no me salio, imprime "Array 2 Array" solamente.
Si a alguien le sale por favor posteela aca, Gracias!.

Última edición por yahoo; 22/07/2008 a las 05:35
  #4 (permalink)  
Antiguo 13/09/2016, 09:51
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Foreach() en arrays multidimensionales

Código PHP:
foreach ($arreglo as $v1)
{
    foreach (
$v1 as $v2)
        {
        echo 
"$v2\n";
    }
    echo 
"<br>";

  #5 (permalink)  
Antiguo 13/09/2016, 13:48
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Foreach() en arrays multidimensionales

Cita:
Iniciado por yahoo Ver Mensaje
Sisi! de funcionar, funciona de diez, la duda que yo tenia era si el foreach automaticamente recorria los arrays multidimensionales, sin necesidad de otras cosas como este caso, la funcion recursiva.

Muchas gracias _CX.

Estuve intentando realizar la funcion de recorrer el array SIN recursividad.
Sensillamente no me salio, imprime "Array 2 Array" solamente.
Si a alguien le sale por favor posteela aca, Gracias!.
foreach no es recursivo y dependiendo de la estructura del arreglo tendrás que usar tantos foreach como niveles tengas en el arreglo, si la estructura no es "uniforme" puede ser mejor idea utilizar recursividad lo cual puede dejarte un código mas fácil de leer.

Código PHP:
Ver original
  1. $arreglo=array(
  2.     "uno"=>array(
  3.         "unoA"=>"1a",
  4.         "unoB"=>"1b",
  5.         "unoC"=>array(
  6.             "unoC1"=>"1c1",
  7.             "unoC2"=>"1c2",
  8.         ),
  9.     ),
  10.     "dos"=>"2",
  11.     "tres"=>array(
  12.         "tresA"=>"3a",
  13.     ),
  14. );
  15.  
  16. array_walk_recursive($arreglo, function($item, $key){
  17.     echo "$item \n";
  18. });
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
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 11:50.