Lặp qua một mảng php


109

Tôi có mảng này ... làm cách nào để bạn in từng đường dẫn tệp và tên tệp? Cách tốt nhất để làm việc này là gì?

  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 as & $ value) {print_r ($ value); echo "<br/> <hr />"; }
esafwan

Câu trả lời:


261

Sử dụng foreachvòng lặp không có phím

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

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

Sử dụng foreachvòng lặp với phím

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

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

Sử dụng forvòng lặp

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

var_dump là một hàm thực sự hữu ích để có được ảnh chụp nhanh của một mảng hoặc đối tượng.


3
Ngoài ra var_export, thanh toán sẽ in mã PHP hợp lệ. Bạn có thể lưu nó vào một tệp, sau đó viết mã để lặp lại nó ở đó trước khi đưa nó vào mã chính của bạn.
Ben

đây là vấn đề với việc sử dụng phương thức vòng lặp for. Tôi đọc ở đâu đó rằng chỉ mục có thể không tồn tại ??
bakalolo

1
Nếu chỉ mục không được xác định như thế nào ['a', 'b', 'c'], thì các giá trị của nó là 0,1 và 2
Ish

11

Ok, tôi biết có một câu trả lời được chấp nhận nhưng… đối với những trường hợp đặc biệt hơn, bạn cũng có thể sử dụng câu trả lời sau:

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

Hoặc theo một cách đơn giản hơn:

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

array_map('printItem', $array);

Điều này sẽ cho phép bạn thao tác dữ liệu một cách dễ dàng hơn.


6

Bắt đầu đơn giản, không có HTML:

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

Và bạn có thể thao tác các trường trong foreach.


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

3
Khi trả lời một câu hỏi tám tuổi với ba câu trả lời hiện có khác, sẽ rất hữu ích nếu bạn giải thích cách tiếp cận mới mà câu trả lời của bạn mang lại cho câu hỏi. Cũng trong trường hợp này, câu hỏi là in "từng đường dẫn tệp và tên tệp" chứ không phải chỉ in đường dẫn tệp.
Jason Aller

1
Chắc chắn là echo $ giá trị ['filepath']; vì $ giá trị là một mảng, không phải một đối tượng.
Daniel Faure

-1

Bạn cũng có thể sử dụng điều này mà không cần tạo thêm biến cũng như sao chép dữ liệu trong bộ nhớ như foreach ().

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

2
mỗi hàm đã không được chấp nhận kể từ PHP 7.2.0. "Dựa vào chức năng này là rất nản" php.net/manual/en/function.each.php
asiop
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.