Ulangi melalui array php

109

Saya memiliki array ini ... bagaimana Anda mencetak setiap jalur file dan nama file? Apa cara terbaik untuk melakukannya?

  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
sumber
foreach ($ node-> field_image sebagai & $ value) {print_r ($ value); echo "<br/> <hr />"; }
esafwan

Jawaban:

261

Menggunakan foreachloop tanpa kunci

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

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

Menggunakan foreachloop dengan kunci

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

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

Menggunakan forloop

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

var_dump adalah fungsi yang sangat berguna untuk mendapatkan snapshot dari sebuah array atau objek.

Ish
sumber
3
Juga checkout var_export, yang mencetak kode PHP yang valid. Anda dapat menyimpannya ke file, lalu menulis kode untuk mengulangnya di sana sebelum memasukkannya ke dalam kode utama Anda.
Ben
di sini masalah dengan menggunakan metode perulangan for. Saya membaca bahwa indeks mungkin tidak ada ??
bakalolo
1
Jika indeks tidak didefinisikan seperti ['a', 'b', 'c'], maka nilainya adalah 0,1 dan 2.
Ish
11

Oke, saya tahu ada jawaban yang diterima tetapi ... untuk kasus yang lebih khusus Anda juga bisa menggunakan yang ini:

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

Atau dengan cara yang lebih tidak rumit:

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

array_map('printItem', $array);

Ini akan memungkinkan Anda untuk memanipulasi data dengan cara yang lebih mudah.

obsergiu
sumber
6

Memulai dengan sederhana, tanpa HTML:

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

Dan sebaliknya Anda dapat memanipulasi bidang di depan.

SilverbackNet
sumber
2
foreach($array as $item=>$values){
     echo $values->filepath;
    }
Kavinda Harshana
sumber
3
Saat menjawab pertanyaan berusia delapan tahun dengan tiga jawaban lain yang ada, ada gunanya menjelaskan pendekatan baru apa yang dibawa oleh jawaban Anda terhadap pertanyaan tersebut. Juga dalam hal ini pertanyaannya adalah mencetak "setiap jalur file dan nama file" bukan untuk mencetak hanya jalur file.
Jason Aller
1
Ini harus menjadi echo $ values ​​['filepath']; karena $ values ​​adalah larik, bukan objek.
Daniel Faure
-1

Anda juga dapat menggunakan ini tanpa membuat variabel tambahan atau menyalin data dalam memori seperti yang dilakukan foreach ().

while (false !== (list($item, $values) = each($array)))
{
    ...
}
jakoubekcz.dll
sumber
2
setiap fungsi sudah tidak digunakan lagi mulai PHP 7.2.0. "Mengandalkan fungsi ini sangat tidak disarankan" php.net/manual/en/function.each.php
asiop