Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php foreach从嵌套数组中选择特定元素_Php_Arrays_Foreach - Fatal编程技术网

使用php foreach从嵌套数组中选择特定元素

使用php foreach从嵌套数组中选择特定元素,php,arrays,foreach,Php,Arrays,Foreach,假设我有这个嵌套数组: Array ( [0] => page [1] => section [2] => side [3] => Array ( [0] => Array ( [0] => url1 [1] => url2

假设我有这个嵌套数组:

    Array
(
    [0] => page
    [1] => section
    [2] => side
    [3] => Array
        (
            [0] => Array
                (
                    [0] => url1
                    [1] => url2
                    [2] => url3
                )

            [1] => Array
                (
                    [0] => url4
                    [1] => url5
                    [2] => url6
                )

            [2] => Array
                (
                    [0] => url7
                    [1] => url8
                    [2] => url9
                )

        )

)
我想让每个php从索引为[1]的每个数组元素中获取

foreach($arr as $key => $value){
        echo $key." : ".$value."\n";

foreach($value as $key => $value){
    echo "   ". $key." : ".$value."\n";

    foreach($value as $key => $value){
        echo "     ". $key." : ".$value."\n";
    }
}
}
这是我的输出:

0 : page
1 : section
2 : side
3 : Array
   0 : Array
     0 : url1
     1 : url2
     2 : url3
   1 : Array
     0 : url4
     1 : url5
     2 : url6
   2 : Array
     0 : url7
     1 : url8
     2 : url9
但我想同时从每个数组中选择特定元素,如下所示:

 1 : url2
 1 : url5
 1 : url8

有人能帮忙吗?

您可以在单独的数组中收集条目,然后对其进行迭代。根据您的代码,如下所示:

<?php
$entriesWithOne = [];
foreach($arr as $key => $value){
    echo $key." : ".$value."\n";

    foreach($value as $key => $value){
        echo "   ". $key." : ".$value."\n";

        foreach($value as $key => $value){
            echo "     ". $key." : ".$value."\n";
            if ($key == 1) {
                $entriesWithOne[] = $value;
            }
        }
    }
}

foreach($entriesWithOne as $url) {
    echo '1 : ' . $url . "\n";
}
请注意,在本例中,我只进行了检查并将其添加到最内部的循环中,因为它满足您的要求。但是,如果您也希望从其他循环中收集数据,则必须在那里执行类似的操作