循环遍历数组 php
Posted
技术标签:
【中文标题】循环遍历数组 php【英文标题】:What is the best way to loop through this array in PHP? 【发布时间】:2011-05-23 19:29:45 【问题描述】:我有这个数组...你如何打印每个文件路径和文件名?最好的方法是什么?
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);回声“”; 【参考方案1】:
使用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
是一个非常有用的函数,可以获取数组或对象的快照。
【讨论】:
还结帐var_export
,它会打印有效的php代码。您可以将其保存到文件中,然后编写代码以在其中循环,然后将其放入主代码中。
这里是使用for循环方法的问题。我在某处读到该索引可能不存在??
如果索引没有像['a', 'b', 'c']
那样定义,那么它的值是0,1和2。【参考方案2】:
好的,我知道有一个可以接受的答案,但是……对于更多特殊情况,您也可以使用这个:
array_map(function($n) echo $n['filename']; echo $n['filepath'];,$array);
或者以更简单的方式:
function printItem($n)
echo $n['filename'];
echo $n['filepath'];
array_map('printItem', $array);
这将使您能够以更简单的方式操作数据。
【讨论】:
【参考方案3】:从简单的开始,没有 html:
foreach($database as $file)
echo $file['filename'] . ' at ' . $file['filepath'];
您可以通过其他方式操作 foreach 中的字段。
【讨论】:
【参考方案4】:foreach($array as $item=>$values)
echo $values->filepath;
【讨论】:
当用其他三个现有答案回答一个八年前的问题时,解释您的答案为该问题带来了什么新方法很有用。同样在这种情况下,问题是打印“每个文件路径和文件名”而不是只打印文件路径。 应该是 echo $values['filepath'];因为 $values 是一个数组,而不是一个对象。【参考方案5】:您也可以使用它,而无需创建额外的变量,也无需像 foreach() 那样复制内存中的数据。
while (false !== (list($item, $values) = each($array)))
...
【讨论】:
从 PHP 7.2.0 开始,每个函数都已被弃用。 “强烈建议不要依赖此功能”php.net/manual/en/function.each.php以上是关于循环遍历数组 php的主要内容,如果未能解决你的问题,请参考以下文章