这里有很多关于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
任何人都知道如何将这个嵌套循环放在一起?
感谢您的帮助,非常感谢。
答案 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'];
}
}
}
此外,您还尝试通过类属性访问表示法访问数组元素。