Schleife durch ein Array PHP

109

Ich habe dieses Array ... wie druckt man jeden Dateipfad und Dateinamen? Was ist der beste Weg, dies zu tun?

  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
quelle
foreach ($ node-> field_image als & $ value) {print_r ($ value); Echo "<br/> <hr />"; }
Esafwan

Antworten:

258

Verwendung foreachSchleife ohne Schlüssel

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

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

Verwendung foreachSchleife mit Schlüssel

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

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

Verwendung forSchleifen

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

var_dump ist eine sehr nützliche Funktion, um eine Momentaufnahme eines Arrays oder Objekts zu erhalten.

Ish
quelle
3
Auch zur Kasse var_export, die gültigen PHP-Code druckt. Sie können das in einer Datei speichern und dann den Code schreiben, um ihn dort zu durchlaufen, bevor Sie ihn in Ihren Hauptcode einfügen.
Ben
ist hier ein Problem bei der Verwendung der for-Schleifenmethode. Ich habe irgendwo gelesen, dass der Index möglicherweise nicht existiert?
Bakalolo
1
Wenn der Index nicht wie folgt definiert ist ['a', 'b', 'c'], sind seine Werte 0,1 und 2.
Ish
11

Ok, ich weiß, dass es eine akzeptierte Antwort gibt, aber… für speziellere Fälle können Sie auch diese verwenden:

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

Oder auf eine unkomplexere Weise:

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

array_map('printItem', $array);

Auf diese Weise können Sie die Daten einfacher bearbeiten.

obsergiu
quelle
6

Einfach anfangen, ohne HTML:

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

Andernfalls können Sie die Felder im foreach bearbeiten.

SilverbackNet
quelle
2
foreach($array as $item=>$values){
     echo $values->filepath;
    }
Kavinda Harshana
quelle
3
Wenn Sie eine acht Jahre alte Frage mit drei anderen vorhandenen Antworten beantworten, ist es hilfreich zu erklären, welchen neuen Ansatz Ihre Antwort auf die Frage bringt. Auch in diesem Fall bestand die Frage darin, "jeden Dateipfad und Dateinamen" zu drucken, nicht nur den Dateipfad.
Jason Aller
1
Es sollte echo $ values ​​['Dateipfad'] sein; Denn as $ values ​​ist ein Array, kein Objekt.
Daniel Faure
-1

Sie können dies auch verwenden, ohne zusätzliche Variablen zu erstellen oder die Daten in den Speicher zu kopieren, wie dies bei foreach () der Fall ist.

while (false !== (list($item, $values) = each($array)))
{
    ...
}
jakoubekcz
quelle
2
Jede Funktion ist ab PHP 7.2.0 veraltet. "Es wird dringend davon abgeraten, sich auf diese Funktion zu verlassen" php.net/manual/en/function.each.php
asiop