Boucle à travers un tableau php

109

J'ai ce tableau ... comment imprimer chacun des chemins de fichiers et des noms de fichiers? Quelle est la meilleure façon de procéder?

  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 
           ) 
  ) 
esafwan
la source
foreach ($ node-> field_image as & $ value) {print_r ($ value); echo "<br/> <hr />"; }
esafwan

Réponses:

261

Utilisation de la foreachboucle sans clé

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

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

Utilisation de la foreachboucle avec la clé

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

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

Utilisation de la forboucle

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

var_dump est une fonction vraiment utile pour obtenir un instantané d'un tableau ou d'un objet.

Ish
la source
3
Checkout également var_export, qui imprime un code PHP valide. Vous pouvez enregistrer cela dans un fichier, puis écrire le code pour y faire une boucle avant de le mettre dans votre code principal.
Ben
est ici un problème avec l'utilisation de la méthode de la boucle for. J'ai lu quelque part cet index pourrait ne pas exister ??
bakalolo
1
Si l'index n'est pas défini comme ['a', 'b', 'c'], alors ses valeurs sont 0,1 et 2.
Ish
11

Ok, je sais qu'il y a une réponse acceptée mais… pour des cas plus spéciaux, vous pouvez également utiliser celle-ci:

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

Ou d'une manière plus simple:

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

array_map('printItem', $array);

Cela vous permettra de manipuler les données plus facilement.

obsergiu
la source
6

Commencer simple, sans HTML:

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

Et vous pouvez autrement manipuler les champs dans le foreach.

SilverbackNet
la source
2
foreach($array as $item=>$values){
     echo $values->filepath;
    }
Kavinda Harshana
la source
3
Lorsque vous répondez à une question vieille de huit ans avec trois autres réponses existantes, il est utile d'expliquer quelle nouvelle approche votre réponse apporte à la question. Dans ce cas également, la question était d'imprimer "chacun des chemins de fichiers et de noms de fichiers" pour ne pas imprimer uniquement le chemin de fichiers.
Jason Aller
1
Cela devrait être echo $ values ​​['filepath']; car as $ values ​​est un tableau, pas un objet.
Daniel Faure
-1

Vous pouvez également l'utiliser sans créer de variables supplémentaires ni copier les données dans la mémoire comme le fait foreach ().

while (false !== (list($item, $values) = each($array)))
{
    ...
}
Jakoubekcz
la source
2
chaque fonction est obsolète depuis PHP 7.2.0. "Il est fortement déconseillé de se fier
asiop