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 
           ) 
  ) 

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.


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.


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.


2
foreach($array as $item=>$values){
     echo $values->filepath;
    }

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)))
{
    ...
}

2
chaque fonction est obsolète depuis PHP 7.2.0. "Il est fortement déconseillé de se fier
asiop
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.