Foros del Web » Programando para Internet » PHP »

como recorrer arreglo de tres dimenciones?

Estas en el tema de como recorrer arreglo de tres dimenciones? en el foro de PHP en Foros del Web. Commo puedo recorrer el siguiente arreglo? $Array[0]['imagen'][]=$row['imagen']; es un arreglo de tres dimenciones, como puedo recorrerlo alguien me puede ayudar? con un foreach() como seria ...
  #1 (permalink)  
Antiguo 21/10/2010, 16:29
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta como recorrer arreglo de tres dimenciones?

Commo puedo recorrer el siguiente arreglo?

$Array[0]['imagen'][]=$row['imagen'];

es un arreglo de tres dimenciones, como puedo recorrerlo alguien me puede ayudar?

con un foreach() como seria la estructura?

muchismoas gracias de ante mano

Última edición por sagitariosTheBest; 21/10/2010 a las 16:40
  #2 (permalink)  
Antiguo 21/10/2010, 17:11
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta Respuesta: como recorrer arreglo de tres dimenciones?

Commo puedo recorrer el siguiente arreglo?

Código PHP:
$Array[0]['imagen'][]=$row['imagen']; 
tiene la siguiente estructura:


Código PHP:

   

Array
(
    [
0] => Array
        (
            [
modelo] => aguila
            
[imagen] => Array
                (
                    [
0] => aguila1.jpg
                    
[1] => aguila2.jpg
                    
[2] => aguila3.jpg
                    
[3] => aguila4.jpg
                    
[4] => aguila5.jpg
                
)

        )

    [
1] => Array
        (
            [
modelo] => caracol
            
[imagen] => Array
                (
                    [
0] => caracol1.jpg
                    
[1] => caracol2.jpg
                    
[2] => caracol3.jpg
                    
[3] => caracol4.jpg
                    
[4] => caracol5.jpg
                
)

        )


es un arreglo de tres dimenciones, como puedo recorrerlo alguien me puede ayudar?
con un foreach() como seria la estructura?

lo que necesito es que primero se impriman las imagenes y despues el modelo

muchismoas gracias de ante mano
  #3 (permalink)  
Antiguo 21/10/2010, 17: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 recorrer arreglo de tres dimenciones?

lo intentaste?? sino me equivoco deberia de ser asi
Código PHP:
Ver original
  1. foreach($Array as $id=>$value){
  2.      foreach($value[$id] as $key=>$valor){
  3.          echo $key;  
  4.          foreach($valor[$key] as $key2=>$valor2){
  5.                echo $key2." ".$valor2."<br/>";
  6.         }
  7. }
pruebalo a ver si no me ekivoque de todas maneras la logica es que recorras con un bucle cada dimencion del array 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
  #4 (permalink)  
Antiguo 21/10/2010, 17:35
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: como recorrer arreglo de tres dimenciones?

Este codigo en alguna ocacion me lo paso Nemutagk:
ahora lo estoy adoptando para otro proyecto.

El problema es que necesito imprimir mis modelos y las imagenes que se asocian a ese modelo.

el arreglo queda armado perfectamente como se los muestro arriba, el detalle es que quiero usar ligthbox y se usa de la siguiente manera.

Cita:
<a href=imagenes/imagenes.jpg rel=ligthbox[$modelo['modelo']]>
<img src=imagenes/aquivalathumb.jpg/>
</a>
el problema empieza cuando quiero usar el arreglo final $newArray. como esta formado no me permite imprimir mis imagens como quiero. me queda de la siguiente forma el foreach:

Código PHP:

foreach($newArray as $modelo){
    echo 
"<a href=../img/modelos/$modelo[modelo].jpg>";    
    echo 
"</a>";
    
       foreach(
$modelo['imagen'] as $imagen){
         echo 
"<img src=../img/modelos/$imagen>";        
         }
         
       }


//aqui necesito que quede al reves es decir que la etiqueta "a" envuelva a la
//"img"

//que quede asi para  yo poderlos imprimir de la manera correcta.
//echo "<a href=../img/modelos/$modelo[modelo].jpg>";    
//       echo "<img src=../img/modelos/$imagen>";    
//    echo "</a>"; 

Alguien ayudeme porfa no se como armar el arreglo de tal manera que primero queden las imagenes luego los 2 modelos asi poder imprimir sin problema dentro del foreach

Si alguien gusta puedo publicar la base de datos y el ejemplo completo para que vean de mejor forma espero me hayan entendido gracias

Código PHP:

<?php
        
        
function search_in_array($search,$array){
            
            
$count=0;
            foreach(
$array as $item){
                 if(
$item['modelo']==$search){
                 return 
$count;
                 }
            
$count++;    
            }
            return 
false;
        }
        
        include(
"../conexion/conexion.php");
           
            
            
$qry="select imagen,modelo
   from tblmodelo INNER JOIN tblimagen ON tblmodelo.id_modelo=tblimagen.id_modelo "
;               
            
$recurso=mysql_query($qry,$conn);
        
        if(!
$recurso){
           echo 
"no se envio la consulta";    
        }
     
     
$newArray=array();
     
$numItem=0;     
     while(
$row=mysql_fetch_assoc($recurso)){         
         
$valor=search_in_array($row['modelo'],$newArray);
         
             if(
$valor===false){
                
$newArray[$numItem]['modelo']= $row['modelo'];                           
              
$numItem++;                               
             } else{
                
$newArray[$valor]['imagen'][]=$row['imagen'];
                
             }                                 
        }      

   foreach(
$newArray as $modelo){
    echo 
"<p> El modelo es: ".$modelo['modelo']."</p>";
    echo 
'<ul><li>Tiene las siguientes Imagenes:</li>';
       foreach(
$modelo['imagen'] as $imagen){
         echo 
'<li>'.$imagen.'</li>';        
         }
         echo 
'</ul>';
       }

Última edición por sagitariosTheBest; 21/10/2010 a las 17:42
  #5 (permalink)  
Antiguo 21/10/2010, 18:01
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta Respuesta: como recorrer arreglo de tres dimenciones?

Haber voy a plantear nuevamente el problema por que le he planteado de manera espantosa sirve que se entiende mejor , por que la verdad lo hice muy mal.

Tengo un directorio "img/modelos" en este directorio tengo todas mis imagenes. clasificadas de la siguiente manera.

-modelo
-modelo1
-modelo2
-modelo3
-modelo4
-modelo5

donde "modelo" es la imagen pequeña que deseo poner en la etiqueta
"<img src=img/modelos/modelo.jpg>"

bien hasta aqui vamos bien.

con la siguiente consulta:
Cita:
select imagen,modelo
from tblmodelo INNER JOIN tblimagen ON tblmodelo.id_modelo=tblimagen.id_modelo
obtengo mis registros repetidos
Cita:
columnas

Imagenes Modelo

modelo.jpg modelo
modelo1.jpg modelo
modelo2.jpg modelo
modelo3.jpg modelo
modelo4.jpg modelo
modelo5.jpg modelo

modelo.jpg modelo2
modelo1.jpg modelo2
modelo2.jpg modelo2
modelo3.jpg modelo2
modelo4.jpg modelo2
modelo5.jpg modelo2

ahora hace tiempo Nemutagk: me paso un maravilloso codigo que resolvio el problema de que se repiten los nombres en la columna modelo. es el siguiente:

Código PHP:

function search_in_array($search,$array){
            
            
$count=0;
            foreach(
$array as $item){
                 if(
$item['modelo']==$search){
                 return 
$count;
                 }
            
$count++;    
            }
            return 
false;
        }
        
        include(
"../conexion/conexion.php");
           
            
            
$qry="select imagen,modelo
   from tblmodelo INNER JOIN tblimagen ON tblmodelo.id_modelo=tblimagen.id_modelo "
;               
            
$recurso=mysql_query($qry,$conn);
        
        if(!
$recurso){
           echo 
"no se envio la consulta";    
        }
     
     
$newArray=array();
     
$numItem=0;     
     while(
$row=mysql_fetch_assoc($recurso)){         
         
$valor=search_in_array($row['modelo'],$newArray);
         
             if(
$valor===false){
                
$newArray[$numItem]['modelo']= $row['modelo'];                           
              
$numItem++;                               
             } else{
                
$newArray[$valor]['imagen'][]=$row['imagen'];
                
             }                                 
        }      

   foreach(
$newArray as $modelo){
    echo 
"<p> El modelo es: ".$modelo['modelo']."</p>";
    echo 
'<ul><li>Tiene las siguientes Imagenes:</li>';
       foreach(
$modelo['imagen'] as $imagen){
         echo 
'<li>'.$imagen.'</li>';        
         }
         echo 
'</ul>';
       } 
con este codigo obtengo un array como sigue:

Código PHP:
Array
(
    [
0] => Array
        (
            [
modelo] => aguila
            
[imagen] => Array
                (
                    [
0] => aguila1.jpg
                    
[1] => aguila2.jpg
                    
[2] => aguila3.jpg
                    
[3] => aguila4.jpg
                    
[4] => aguila5.jpg
                
)

        )

    [
1] => Array
        (
            [
modelo] => caracol
            
[imagen] => Array
                (
                    [
0] => caracol1.jpg
                    
[1] => caracol2.jpg
                    
[2] => caracol3.jpg
                    
[3] => caracol4.jpg
                    
[4] => caracol5.jpg
                
)

        )


bien ahora ese array lo quiero usar para jalar las imagenes pero deseo usar ligthbox:

pero la forma en como esta armador $newArray no me permite usar con ligthbox por que necesito imprimirlo de las siguiente manera.

Código PHP:
foreach($newArray as $modelo){
    echo 
"<a href=../img/modelos/$modelo[modelo].jpg>";    
    echo 
"</a>";
    
       foreach(
$modelo['imagen'] as $imagen){
         echo 
"<img src=../img/modelos/$imagen>";        
         }
         
       }
//aqui necesito que quede al reves es decir que la etiqueta "a" envuelva a la
//"img"

//que quede asi para  yo poderlos imprimir de la manera correcta.
//echo "<a href=../img/modelos/$modelo[modelo].jpg>";    
//       echo "<img src=../img/modelos/$imagen>";    
//    echo "</a>"; 
alguien que me pueda orientar, de como armar $newArray de tal manera que pueda envolver con la etiqueta "<a>" a img??
si necesitan la base de datos y las el codigo completo estoy dispuesto a pasar la base de datos, llevo ya muchos dias con este problema sin obtener resultado alguno me he comenzado a desesperar

ayuda porfavor

Última edición por sagitariosTheBest; 21/10/2010 a las 18:07

Etiquetas: recorrer, tres, arreglos
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 06:15.