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

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.


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.


6

Einfach anfangen, ohne HTML:

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

Andernfalls können Sie die Felder im foreach bearbeiten.


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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.