在 PHP 中循环这个数组的最佳方式是什么?

我有这个数组... 如何打印每个文件路径和文件名?最好的方法是什么?

  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
)
)
453571 次浏览

开始很简单,没有 HTML:

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

否则,您可以操作 foreach 中的字段。

使用不带键的 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 $array[$i]['filename'];
echo $array[$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是获取数组或对象快照的一个非常有用的函数。

对于更特殊的情况,您也可以使用这个:

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

或者以一种更简单的方式:

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


array_map('printItem', $array);

这将允许您以更简单的方式操作数据。

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

您也可以使用它,而无需像 foreach ()那样创建其他变量或在内存中复制数据。

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