배열 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 as & $ value) {print_r ($ value); echo "<br/> <시간 />"; }
esafwan 2010

답변:


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 코드를 인쇄하는 checkout도 있습니다. 이를 파일에 저장 한 다음 메인 코드에 넣기 전에 루프를 작성하는 코드를 작성할 수 있습니다.

for 루프 방법을 사용하는 데 문제가 있습니다. 색인이 존재하지 않을 수있는 곳을 읽었습니다.?
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의 필드를 조작 할 수 있습니다.


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

3
3 개의 다른 기존 답변으로 8 년 된 질문에 대답 할 때 질문에 대한 새로운 접근 방식을 설명하는 것이 유용합니다. 또한이 경우 문제는 파일 경로 만 인쇄하지 않고 "각 파일 경로와 파일 이름"을 인쇄하는 것이 었습니다.
Jason Aller

1
echo $ values ​​[ 'filepath']; for $ values는 객체가 아니라 배열입니다.
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.