我在下面有一个print_r的输出,我想用foreach循环访问所有单个元素值但不幸的是我无法通过foreach来做到这一点。任何人都可以请帮助我关联阵列问题。
我可以通过此$arr['Level1'][Date]
访问它,并将值返回为“2015-04-14 07:15”。
但是如何通过foreach循环获取所有元素值?
Array
(
[Level1] => Array
(
[Date] => 2015-04-14 07:15
[img1] => pic1
[img2] => pic2
[InnerLevel] => Array
(
[0] => value1
[1] => value2
)
)
[Level2] => Array
(
[Date] => 2015-04-15 08:15
[img1] => pic1
[img2] => pic2
[InnerLevel] => Array
(
[0] => value3
[1] => value4
)
)
)
答案 0 :(得分:0)
foreach ($myarray as $item) {
echo $item['Date'] . "\n";
}
数组是否关联这一事实并没有改变任何东西。
$item
依次是foreach循环中$myarray['Level1']
然后$myarray['Level2']
(等等,如果有更多)的副本。
答案 1 :(得分:0)
这取决于索引深度。
提取简单的关联数组,如:
$mainarray['Name']='Value';
使用:
foreach ($mainarray as $aname=>$avalue)
{
echo $aname." in ".$mainarray." = ".$avalue." <br>";
}
提取更深层的关联数组,如:
$mainarray['Child']['Name']='Value';
使用:
foreach ($mainarray as $aname=>$asubarray)
{
echo "In ".$aname." from ".$mainarray."...<br>";
foreach ($asubarray as $asubname=>$asubvalue){
echo $asubname." = ".$avalue." <br>";
}
echo "<br>";
}
此:
<br>
代表新行。如果您从命令行运行代码,或者只想输出文本,请将其用于新行:
\n
答案 2 :(得分:0)
<?php
foreach ($myarray as $level => $itemArr) {
if(is_array($itemArr)) {
foreach ($itemArr as $levelArr) {
if(is_array($levelArr)) {
foreach ($levelArr as $key => $interlevelValue) {
echo $interlevelValue;
}
} else {
echo $levelArr;
}
}
} else {
echo $itemArr;
}
}
?>
答案 3 :(得分:0)
实际上还有另一种方法可以在php中执行此操作。
“使用Spl迭代器迭代多维数组:
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $key=>$value) {
echo $key.' -- '.$value.'<br />';
}
这将迭代所有可能的可迭代对象。 参见
“ - 引自 - https://stackoverflow.com/a/2149106/1766122 @Gordon回答