Autor Tema: PHP Obtener array arreglo multidimensional a partir dos arrays unidimensionales  (Leído 2690 veces)

RAM47

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 14
    • Ver Perfil
Hola. Tengo una lista de carpetas numeradas como 1, 2, 3, etc... En cada una hay varias imágenes. He hecho un código para guardar el path de las carpetas y la lista de archivos en dos arrays diferentes. No sé si es posible juntar los dos arrays en uno solo multidimensional. Tendría que ocupar alguna función particular? Agradezco cualquier sugerencia. Muchas gracias.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
    <title> Operaciones </title>
    <meta charset="utf-8">
</head>
    <body>
        <?php
        
//GUARDAR DIRECTORIOS
        //crear array para directorios numericos
        
$pathDIR "img/";
        
$DIR = Array();
        
//guardar directorios numericos en array con foreach
        
foreach (glob($pathDIR '/[0-30]*'GLOB_ONLYDIR) as $dirname) {
            
$DIR[] = $dirname;    
        }
        
//mostrar los directorios numericos
        
for($a 0$a count($DIR); $a++) {
            echo 
$DIR[$a] . "<br>";   
        }
        
//GUARDAR IMAGENES
        //creo array para directorios
        
$pathFILE = Array();
        
//creo arrays para imagenes      
        
$file = Array();            
        
//inicio ciclo for
        
for($b 1$b <= count($DIR); $b++) {
            
$pathFILE[$b] = "img/" $b "/"
            
//guardo las imagenes en array con foreach
            
foreach(glob($pathFILE[$b] . '*.jpg') as $filename) {
                
$file[] = $filename;
            }
        }
        
//muestro las imagenes
        
for($c 1$c <= count($file); $c++) {
            echo 
$file[$c-1] . "<br>";
        }
        
?>

    </body>
</html>
« Última modificación: 05 de Noviembre 2016, 14:22 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, pon un ejemplo de lo que quieres conseguir para poder ayudar.

Supongamos que tienes:

directorio[0] = "h:/www/dir/";
fichero[0] = "casa.jpg";
fichero[1] = "perro.jpg";
fichero[2] = "jardin.gif";

¿Lo que quieres es crear algo como

direc_fich[0][0] = "casa.jpg";
direc_fich[0][1] = "perro.jpg";
direc_fich[0][2] = "jardin.gif";

?

Salu2

RAM47

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 14
    • Ver Perfil
Finalmente opté por hacerlo de una vez con una función recursiva.
Código: [Seleccionar]
        <?php 
        
        
//función para obtener el nombre de las carpetas y los archivos en array multidimensional
        
function dirToArray($dir) { 
            
            
//creo un array
            
$listDir = array();
            
            
//abro los directorios contenidos en $dir
            
if($handler opendir($dir)) { 
                
                
//leo todos los elementos contenidos 
                
while (false !== ($file readdir($handler))) {
                    
                    
//verifico que hayan elementos
                    
if ($file != "." && $file != ".." && $file != "thumb") {
                        
                        
/*si los elementos son archivos, guardo los elementos 
                        en algún indice (dimensión) del array*/
                        
if(is_file($dir."/".$file)) { 
                            
$listDir[] = $file;
                            
                        
/*si los elementos son directorios, guardo los elementos 
                        en otro índice o dimensión, repitiendo hasta que hayan elementos*/
                        
}elseif(is_dir($dir."/".$file)){ 
                            
$listDir[$file] = dirToArray ($dir."/".$file); 
                        } 
                    } 
                }
                
closedir($handler); 
            } 
            return 
$listDir
        }
        
        
        
//establezco directorio para función
        
$dir "/";
        
//cambiar array local
        
$list dirToArray($dir);
        
        
//visualizar imágenes con bucle 
        
for ($a 1$a count($list)+1$a++) {
            for (
$b 0$b count($list[$a]); $b++) {
                
                echo 
$dir $a "/" $list[$a][$b] . "<br>";
                echo 
'<img src="' $dir $a "/" $list[$a][$b] .'" width = 160 height = 120>'."<br/>";
  
            }
        }
        
?>

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Gracias por indicar cómo lo solucionaste, le puede servir de ayuda a otras personas.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".