繁体   English   中英

PHP-foreach循环和多维数组

[英]PHP - foreach loop and multidimensional array

因此在SO上有很多关于多维数组和foreach循环的问题/答案,但我还没有找到一个专门针对我的情况的问题。 如有其他建议,请告知。

我的数组的结构如下,并输出到CodeIgniter视图:

Array
(
    [2] => Array //this is the unique user ID
        (
            [name] => Joe Schmoe
            [cars] => Array
                (
                    [112] => Array //this is the unique car ID
                        (
                            [cars_name] => Honda
                            [cars_type] => Sedan
                            [cars_color] => White
                        )

                    [102] => Array
                        (
                            [cars_name] => Toyota
                            [cars_type] => Sedan
                            [cars_color] => Black
                        )

                    [113] => Array
                        (
                            [cars_name] => Nissan
                            [cars_type] => Coupe
                            [cars_color] => Red
                        )
                )
        )

    [5] => Array
        (
            [name] => Buck
            [cars] => Array
                (
                    [147] => Array
                        (
                            [cars_name] => Tesla
                            [cars_type] => Sedan
                            [cars_color] => Yellow
                        )
                )
        )

    [1] => Array
        (
            [name] => Mike Mechanic
            [cars] => Array
                (
                    [140] => Array
                        (
                            [cars_name] => BMW
                            [cars_type] => SUV
                            [cars_color] => Blue
                        )

                    [145] => Array
                        (
                            [cars_name] => MB
                            [cars_type] => Sedan
                            [cars_color] => Gray
                        )

                )
        )
)

我需要构建嵌套的foreach循环的帮助,以便可以访问整个数组中的每个元素。

我尝试了这种嵌套的foreach结构,但这是不行的。

foreach ($results as $data):
    if (is_array($data)):
        foreach ($data as $value):
            if (is_array($value)):
                foreach ($value as $row):
                endforeach;
            endif;
        endforeach;
    endif;
endforeach;

echo $row->cars_name //returns a non-object error

有人知道如何将这个嵌套循环放在一起吗?

感谢您的帮助,不胜感激。

您正在从循环外部访问$ row。 如果要处理每一行,则应将该代码(回声)放入循环中。

另一种选择是使用array_walk_recursive 这将为多维数组中的每个值调用一个回调函数。

[编辑]

您得到的行也不是对象。 它仍然是一个数组。 尝试

echo $row['cars_name'];

我认为这对您有用。

foreach ($results as $result) {
    if(is_array($result['cars'])){
        foreach ($result['cars'] as $car) {
            echo $car['cars_name'];
        }
    }
}

另外,您还尝试通过类属性访问符号访问数组元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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