繁体   English   中英

PHP关联数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM