Bir dizi php üzerinden döngü


109

Bu diziye sahibim ... her bir dosya yolunu ve dosya adını nasıl yazdırırsınız? Bunu yapmanın en iyi yolu nedir?

  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 ($ düğüm-> field_image as & $ değer) {print_r ($ değer); echo "<br/> <hr />"; }
esafwan

Yanıtlar:


261

foreachDöngüyü anahtarsız kullanma

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

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

foreachAnahtarla döngü kullanma

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

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

forDöngü kullanma

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

var_dump bir dizi veya nesnenin anlık görüntüsünü almak için gerçekten kullanışlı bir işlevdir.


3
Ayrıca var_exportgeçerli PHP kodunu yazdıran kullanıma alma. Bunu bir dosyaya kaydedebilir, ardından ana kodunuza koymadan önce oraya döngü yapmak için kodu yazabilirsiniz.
Ben

burada for döngüsü yönteminin kullanılmasıyla ilgili bir sorun var. Dizinin bulunmayabileceğini bir yerde okudum?
bakalolo

1
İndeks gibi tanımlanmamışsa ['a', 'b', 'c'], değerleri 0,1 ve 2'dir.
Ish

11

Tamam, kabul edilmiş bir cevap olduğunu biliyorum ama… daha özel durumlar için bunu da kullanabilirsin:

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

Veya daha karmaşık olmayan bir şekilde:

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

array_map('printItem', $array);

Bu, verileri daha kolay bir şekilde değiştirmenize olanak sağlar.


6

Basitten başlayarak, HTML olmadan:

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

Ve aksi takdirde foreach'taki alanları değiştirebilirsiniz.


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

3
Sekiz yıllık bir soruyu mevcut diğer üç yanıtla yanıtlarken, yanıtınızın soruya hangi yeni yaklaşımı getirdiğini açıklamak yararlıdır. Ayrıca bu durumda soru, yalnızca dosya yolunu yazdırmak için değil "her dosya yolu ve dosya adı" yazdırmaktı.
Jason Aller

1
$ Değerler ['dosya yolu'] eko olmalıdır; $ değerler bir nesne değil, bir dizi olduğu için.
Daniel Faure

-1

Bunu, ek değişkenler oluşturmadan veya foreach () 'in yaptığı gibi bellekteki verileri kopyalamadan da kullanabilirsiniz.

while (false !== (list($item, $values) = each($array)))
{
    ...
}

2
her işlev PHP 7.2.0'dan itibaren kullanımdan kaldırılmıştır. "Bu işleve güvenmek kesinlikle tavsiye edilmez" php.net/manual/en/function.each.php
asiop
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.