PHP关联数组

时间:2015-04-15 02:46:27

标签: php

我在下面有一个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
                )

        )

)

4 个答案:

答案 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回答