วนรอบ php อาร์เรย์


109

ฉันมีอาร์เรย์นี้ ... คุณจะพิมพ์พา ธ ไฟล์และชื่อไฟล์แต่ละไฟล์ได้อย่างไร? วิธีที่ดีที่สุดในการทำคืออะไร?

  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 เป็น & $ value) {print_r ($ value); เสียงสะท้อน "<br/> <hr />"; }
esafwan

คำตอบ:


261

ใช้foreachลูปโดยไม่มีคีย์

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

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

ใช้foreachลูปกับคีย์

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

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

ใช้forลูป

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

var_dump เป็นฟังก์ชันที่มีประโยชน์มากในการรับภาพรวมของอาร์เรย์หรือวัตถุ


3
ชำระเงินvar_exportด้วยซึ่งพิมพ์รหัส PHP ที่ถูกต้อง คุณสามารถบันทึกลงในไฟล์จากนั้นเขียนโค้ดเพื่อวนซ้ำตรงนั้นก่อนใส่ลงในโค้ดหลักของคุณ
เบน

นี่คือปัญหาเกี่ยวกับการใช้วิธี for loop ฉันอ่านที่ไหนสักแห่งที่อาจไม่มีดัชนี ??
Bakalolo

1
หากดัชนีไม่ได้กำหนดไว้เช่น['a', 'b', 'c']นั้นค่าจะเป็น 0,1 และ 2
Ish

11

โอเคฉันรู้ว่ามีคำตอบที่เป็นที่ยอมรับ แต่ ... สำหรับกรณีพิเศษอื่น ๆ คุณสามารถใช้อันนี้:

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

หรือในวิธีที่ไม่ซับซ้อนมากขึ้น:

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

array_map('printItem', $array);

วิธีนี้จะช่วยให้คุณจัดการข้อมูลได้ง่ายขึ้น


6

เริ่มต้นง่ายๆโดยไม่ต้องใช้ HTML:

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

และคุณสามารถจัดการฟิลด์ใน foreach ได้


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

3
เมื่อตอบคำถามอายุแปดขวบพร้อมคำตอบที่มีอยู่อีกสามคำจะเป็นประโยชน์ในการอธิบายว่าคำตอบของคุณนำไปสู่แนวทางใหม่ใด นอกจากนี้ในกรณีนี้คำถามคือให้พิมพ์ "filepath และ filename แต่ละอัน" ไม่ให้พิมพ์เฉพาะ filepath
Jason Aller

1
เป็นเสียงสะท้อน $ values ​​['filepath']; เนื่องจากค่า $ เป็นอาร์เรย์ไม่ใช่วัตถุ
Daniel Faure

-1

คุณสามารถใช้สิ่งนี้ได้โดยไม่ต้องสร้างตัวแปรเพิ่มเติมหรือคัดลอกข้อมูลในหน่วยความจำเช่น foreach () ทำ

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

2
แต่ละฟังก์ชั่นเลิกใช้งานแล้วเมื่อ PHP 7.2.0 "ไม่ควรใช้ฟังก์ชันนี้อย่างยิ่ง" php.net/manual/en/function.each.php
asiop
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.