配列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); エコー "<br/> <hr />"; }
esafwan 2010

回答:


259

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 。これをファイルに保存し、メインコードに配置する前にそこにループするコードを記述できます。
Ben

forループメソッドの使用に関する問題です。インデックスが存在しない可能性がある場所を読んだことがありますか?
バカロロ2017

1
インデックスはように定義されていない場合は['a', 'b', 'c']、それの値が0,1および2です
っぽい

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
8年前の質問に3つの既存の回答で答えるとき、あなたの答えが質問にもたらす新しいアプローチを説明することは役に立ちます。また、この場合の問題は、ファイルパスだけを出力するのではなく、「ファイルパスとファイル名のそれぞれ」を出力することでした。
Jason Aller、

1
echo $ values ['filepath'];である必要があります。$ 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.