150 votes

Quelle est la meilleure façon de boucler ce tableau en PHP ?

J'ai ce tableau... comment imprimer le chemin d'accès au fichier et le nom du fichier ? 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
           )
  )

0 votes

Foreach ($node->field_image as &$value) { print_r($value) ; echo "<br/><hr/>" ; }

342voto

ish1301 Points 6724

Utilisation d'un foreach boucle sans clé :

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

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

Utilisation d'un foreach boucle avec une clé :

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

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

Utilisation d'un for boucle :

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

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

3 votes

Vérifiez également var_export qui imprime un code PHP valide. Vous pouvez l'enregistrer dans un fichier, puis écrire le code pour le lire en boucle avant de le placer dans votre code principal.

0 votes

L'utilisation de la méthode de la boucle for pose-t-elle un problème ? J'ai lu quelque part que l'index pourrait ne pas exister ???

1 votes

Si l'index n'est pas défini comme ['a', 'b', 'c'] alors ses valeurs sont 0, 1 et 2.

13voto

obsergiu Points 127

Pour des cas plus particuliers, vous pouvez également utiliser celle-ci :

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

Ou d'une manière plus décomplexée :

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

array_map('printItem', $array);

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

6voto

SilverbackNet Points 1573

Commencez simplement, sans HTML :

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

Et vous pouvez autrement manipuler les champs dans le foreach.

5voto

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

3 votes

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. De plus, dans ce cas, la question était d'imprimer "chacun des chemins de fichiers et des noms de fichiers" et non d'imprimer uniquement le chemin de fichiers.

1 votes

Cela devrait être echo $values['filepath'] ; car $values est un tableau, pas un objet.

-3voto

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

3 votes

Chaque fonction a été dépréciée à partir de PHP 7.2.0. "L'utilisation de cette fonction est fortement déconseillée". php.net/manuel/fr/function.each.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X