[英]PHP associate array
我在下面有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
)
)
)
foreach ($myarray as $item) {
echo $item['Date'] . "\n";
}
数组是否具有关联性这一事实不会改变任何东西。
$item
在foreach循环中依次是$myarray['Level1']
然后是$myarray['Level2']
(如果有的话,等等)的副本。
这取决于索引深度。
要提取简单的关联数组,例如:
$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
<?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;
}
}
?>
实际上,在php中还有另一种方法。
“使用Spl Iterators可以轻松遍历多维数组:
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $key=>$value) {
echo $key.' -- '.$value.'<br />';
}
这将遍历所有可能的可迭代对象。 看到
“ -引述- https://stackoverflow.com/a/2149106/1766122通过@Gordon回答
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.