使用foreach访问子集数组

时间:2017-12-25 07:11:10

标签: php foreach

我有这样的数组

知道如何使用#items访问foreach子集或像这样快速访问某些内容吗?

Array
(
    [0] => Array
        (
            [#theme] => item_list
            [#items] => Array
                (
                    [0] => Array
                    (
                        [nid] => 1
                        [changed] => 1514034947
                        [title] => TITLE 1
                    )

                    [1] => Array
                    (
                        [nid] => 2
                        [changed] => 1514034947
                        [title] => TITLE 2
                    )

                )
        )


     [1] => Array
       (
          [#theme] => pager
       )

BEST

3 个答案:

答案 0 :(得分:1)

假设阵列结构与您在此处发布的完全相同,那么您可以尝试一下。我不知道你想对每个项目做什么,所以这个例子只打印出每个项目的元素:

foreach( $array as $outerarray )
{
    foreach( $outerarray['#items'] as $item ) 
    {
        echo "{$item['nid']} {$item['changed']} {$item['title']}\n";
    }
}

答案 1 :(得分:1)

您可以使用嵌套的foreach从此数组对象中获取最终项目列表...

    foreach($data as $items_list)
    {
        foreach($items_list[#items] as $items)
        {
           // do something here....
        }
    }

答案 2 :(得分:1)

由于您的元素位于3个级别以下,因此您需要使用foreach三次,如下所示:

foreach($data as $items_list){
    foreach($items_list[#items] as $items){
        foreach($items as $val){
            echo $val['nid'];
        }
    }
}

您可以每次只计算数组并​​在foreach循环之前添加条件以检查是否存在更多数组。

就像你可以计算主数组并使用while循环添加条件然后使用foreach,如下所示:

$count = 0;
while($count<count($array)){
    foreach($array[$count]['#items'] as $items ){
        foreach($items as $val){
            echo $val['nid'];
        }
    }
$count = $count+1;
}

在做任何事情之前,如果你调试下面的多个数组会更好:

echo "<pre>"; print_r($array); die;