【问题标题】:PHP - foreach loop and multidimensional arrayPHP - foreach 循环和多维数组
【发布时间】:2011-08-30 15:34:11
【问题描述】:

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

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

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

【问题讨论】:

  • 我在尝试回显数组元素时收到 Trying to get property of non-object 错误
  • 那是因为它不是对象,而你表现得就像它是一个对象一样。请参阅我的答案中的编辑。
  • 您正在尝试访问循环外的循环变量。将 echo 放在最里面的 foreach 中
  • 哇有人无缘无故投了反对票或提供帮助?那里没有失去爱......

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


【解决方案1】:

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

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

[编辑]

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

echo $row['cars_name'];

【讨论】:

  • 感谢@goleztrol 的评论 - 我在循环中尝试过,仍然得到相同的Trying to get property of non-object 错误 --
  • @torr echo $row['cars_name']; 而不是 echo $row->cars_name
【解决方案2】:

我认为这对你有用..

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

您还试图通过类属性访问表示法访问数组元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2015-06-02
    • 2014-12-29
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多