Comunidad de diseño web y desarrollo en internet online

Recorrer un array multidimensional por los distintos niveles

Citar            
MensajeEscrito el 29 Dic 2015 07:13 pm
He creado el siguiente array como ejemplo, para que se entienda.
Tengo un archivo index.php donde tengo el array, hago las búsquedas y configuro el Nº de elementos por página, etc. y envio los datos a una función que tengo en el archivo paginar.php entonces tengo un for que me muestra los elementos del primer nivel y hace la paginación, pero dentro de este tengo otro que me debería mostrar los elementos del segundo nivel que corresponden a cada uno de los elementos del primero y este segundo for es el que no funciona, más abajo explico cuál es el problema exactamente.
index.php

Código PHP :

 <?php
 
 $datos = array(
               array("FORD",
                         array('Focus','foto1'),
                         array('Mondeo','foto2'),
                         array('Fiesta','foto3')                                            
                     ),
                
                array("OPEL",
                         array('Astra','foto1'),                                  
                         array('Mokka','foto2'),                                              
                         array('Corsa','foto3')                   
                     ),
                
                array("FIAT",
                         array('Tipo','foto1'),
                         array('Panda','foto2'), 
                         array('Freemont','foto3'),                                 array('Punto','foto4')                   
                     )                
 );

 ?>

 <?php
 
     //Aqui ponemos el número de elementos que queremos que aparezca por página, en este caso 2
     paginar($datos, 2, $p, $t, $d);
    
 ?>


Ahora tengo otro archivo paginar.php con una función donde recibo los datos y hago la paginación en función del número de marcas que quiero que se muestren por pagina y muestro los div con las marcas de coches, pero y ahí está el problema, al mostrar dentro de cada marca sus modelos, me muestra también a continuación, todos los modelos del resto de marcas.

archivo paginar.php

Código PHP :

 <?php

     function paginar($datos, $l, $p, $t, $d) {       
       
     // DEFINIMOS LA CANTIDAD DE PÁGINAS
     $paginas = ceil(count($datos) / $l);
     // CONDICION DE INICIO
     $inicio = ($p-1)*$l;
     // CONDICION DE FINAL
     $final = $p*$l;   
           
     // MOSTRAMOS LOS ITEMS RESPECTIVOS    
         echo '<br>';
          echo '<div id="resultados">';
        
           for ($i=$inicio; $i<$final; $i++) {
// Aquí escribo el nombre de la marca en cada uno de los div
echo "<div id=titulo><span>".$datos[$i][0]."</span></div>
     
 foreach($datos as $datos2)
    {
      //saco el número de elementos
      $lg = count($datos2);
                   
      //Recorro todos los elementos
      for ($j=1; $j<$lg; $j++) {
         
         //saco el valor de cada elemento y sólo muestro el campo que me interesa, en este caso el primero
// Aquí me debería mostrar sólo los modelos de la marca correspondiente 
         $cadena = $datos2[$j][0];
         echo $cadena."<br>";                 
      }
      echo "<strong>".$lg."</strong><br>";      
   }
echo "</div>";                              
         }else
            break;
           }          
         echo '<br>';          
         echo '</div>'; 
     return;   
  }

?>

Por pedromir

29 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 02 Ene 2016 06:41 pm
Deberia ser

foreach($datos[$i] as $datos2)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ene 2016 06:30 pm
Gracias por contestar.
Pero lo que me comentas no funciona, asi lo tenía hecho, porque delante del foreach($datos[$i] as $datos2) hay un for ($i=$inicio; $i<$final; $i++) que es el que limita el nº de arrays que se visualizan por página y el problema es que con el foreach no funciona el for y por tanto me muestra todos los array, independientemente de lo que le indique, pero ya lo he resuelto en vez de foreach he utilizado varios for y funciona perfectamente

Por pedromir

29 de clabLevel



 

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.