我正在尝试获取物品ID,然后获取该物品ID内的所有选项名称/选项值。因此,最终结果应该是:ID:123,颜色:蓝色,大小:6。ID:456,颜色:黄色,大小:8。然而,我只得到了正确的物品ID,但选项名称/选项值并没有正确传递,要么为空,要么只有一个随机字母。
这是我的代码,它不能正常工作:
这是我的代码,它不能正常工作:
foreach($itemlist as $item)
{
echo $item['ID'];
foreach($item as $option)
{
echo $option['option_name'];
echo $option['option_value'];
}
}
如果想要查看$itemlist
的样子,可以参考以下内容:
Array ( [1] => Array ( [ID] => 123 [QTY] => 1 [MODEL] => sdfsd [IMAGE] => [1] => Array ( [option_name] => 颜色 [option_value] => 蓝色 [option_price] => 0.0000 )
[2] => Array ( [option_name] => 尺寸 [option_value] => 6 [option_price] => 0.0000 )
[price] => 0 )
[2] => Array ( [ID] => 456 [QTY] => 0 [MODEL] => gsdfgd [IMAGE] => [1] => Array ( [option_name] => 颜色 [option_value] => 黄色 [option_price] => 0.0000 )
[2] => Array ( [option_name] => 尺寸 [option_value] => 8 [option_price] => 0.0000 )
[price] => 0 )
)
1
,那么你可以省略foreach($item as $sub)
,直接使用foreach($item[1] as $key => $option)
,不需要任何break;
语句,这样就不必嵌套三个循环... - Elias Van Ootegembreak
放错位置了。最后一段代码包含了三个嵌套循环。break
应该放在第三个循环的外面,在if (is_array())
分支内部,而这个分支又在第二个循环的内部。 - Elias Van Ootegembreak
。确实有两个子数组($item[1]
,$item[2]
),每个都描述了一个特定的选项。如果这些数组始终是数字,您可以使用for
循环,甚至是while(isset($item[$i++]))
。我将编辑您的问题,以更好地格式化所讨论的数组。 - Elias Van Ootegem