PHP - foreach循环和多维数组

时间:2011-05-22 15:48:51

标签: php codeigniter multidimensional-array foreach nested-loops

这里有很多关于multidim数组和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

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

感谢您的帮助,非常感谢。

2 个答案:

答案 0 :(得分:2)

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

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

[编辑]

您获得的行也不是对象。它仍然是一个阵列。尝试

echo $row['cars_name'];

答案 1 :(得分:1)

我认为这对你有用..

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

此外,您还尝试通过类属性访问表示法访问数组元素。