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.