2010-12-11 32 views
46

Tengo esta matriz ... ¿cómo se imprime cada una de las rutas de archivos y nombres de archivo? ¿Cuál es la mejor manera de hacer esto?Loop a través de una matriz php

Array ( 
    [0] => Array ( 
      [fid] => 14 
      [list] => 1 
      [data] => Array ( 
         [alt] => 
         [title] => 
         ) 
      [uid] => 1 
      [filename] => trucks_10785.jpg 
      [filepath] => sites/default/files/trucks_10785.jpg 
      [filemime] => image/jpeg 
      [filesize] => 143648 
      [status] => 1 
      [timestamp] => 1291424171 
      [nid] => 8 
      ) 
    [1] => Array ( 
      [fid] => 19 
      [list] => 1 
      [data] => Array ( 
         [alt] => 
         [title] => 
         ) 
      [uid] => 1 
      [filename] => school.jpg 
      [filepath] => sites/default/files/school.jpg 
      [filemime] => image/jpeg 
      [filesize] => 115355 
      [status] => 1 
      [timestamp] => 1292029563 
      [nid] => 8 
      ) 
    [2] => Array ( 
      [fid] => 20 
      [list] => 1 
      [data] => Array ( 
         [alt] => 
         [title] => 
         )  
      [uid] => 1 
      [filename] => Life_is_wonderful_by_iNeedChemicalX.jpg 
      [filepath] => sites/default/files/Life_is_wonderful_by_iNeedChemicalX_0.jpg 
      [filemime] => image/jpeg 
      [filesize] => 82580 
      [status] => 1 
      [timestamp] => 1292029572 
      [nid] => 8 
      ) 
    [3] => Array ( 
      [fid] => 21 
      [list] => 1 
      [data] => Array ( 
         [alt] => 
         [title] => 
         ) 
      [uid] => 1 
      [filename] => school_rural.jpg 
      [filepath] => sites/default/files/school_rural.jpg 
      [filemime] => image/jpeg 
      [filesize] => 375088 
      [status] => 1 
      [timestamp] => 1292029582 
      [nid] => 8 
      ) 
) 
+0

foreach ($ node-> field_image as & $ value) { print_r ($ value); echo "


"; } – esafwan

Respuesta

125

Usando foreach bucle sin llave

foreach($array as $item) { 
    echo $item['filename']; 
    echo $item['filepath']; 

    // to know what's in $item 
    echo '<pre>'; var_dump($item); 
} 

Usando foreach bucle con llave

foreach($array as $i => $item) { 
    echo $array[$i]['filename']; 
    echo $array[$i]['filepath']; 

    // $array[$i] is same as $item 
} 

Usando for bucle

for ($i = 0; $i < count($array); $i++) { 
    echo $array[$i]['filename']; 
    echo $array[$i]['filepath']; 
} 

var_dump es una función muy útil para obtener una instantánea de una arr ay u objeto.

+2

También revise 'var_export', que imprime código PHP válido. Puedes guardar eso en un archivo, luego escribir el código para recorrer allí antes de ponerlo en tu código principal. – Ben

+0

es aquí un problema con el uso del método for loop. Leí en alguna parte que el índice podría no existir ?? – bakalolo

+0

Si el índice no está definido como '['a', 'b', 'c']', entonces sus valores son 0,1 y 2. – Ish

5

partir sencilla, sin HTML:

foreach($database as $file) { 
    echo $file['filename'] . ' at ' . $file['filepath']; 
} 

Y que de lo contrario puede manipular los campos de la foreach.

5

Ok, ya sé que es una respuesta aceptada, pero ... para los casos más especiales también se puede utilizar éste:

array_map(function($n) { echo $n['filename']; echo $n['filepath'];},$array); 

O de una manera más anti-complejo:

function printItem($n){ 
    echo $n['filename']; 
    echo $n['filepath']; 
} 

array_map('printItem', $array); 

Este le permitirá manipular los datos de una manera más fácil.