我正在尝试使用标准的foreach循环提取嵌入在另一个数组中的数组,问题是它会不断返回不需要的数据。
阵列
Array
(
[id] => 2035443879
[status] => Unshipped
[sku] => 0340024275-UsedGood
[isbn] => 0340024275
[condition] => Used
[number_of_items] => 1
[title] => Linnets and Valerians (Knight Books)
[purchase_date] => 1361536149
[0] => Array
(
[status] => Shipped
[title] => Linnets and Valerians (Knight Books)
[date] => 1361491200
)
)
打印功能
function mapStatus($orders){
foreach($orders as $order){
echo "<pre>";
print_r($order);
echo "</pre>";
foreach(array_unique($order) as $item){
echo "-".$item["status"]."-";
}
}
}
结果
-2--U--0--0--U--1--W--L--H--1--Shipped-
从你的结果可以看出打印的内容并不完全符合我的预期,似乎我打印的是数组中每个索引的第一个字符,而不仅仅是我想要的实际数组。
我知道我可以使用is_array()
函数来确定我打印的内容是否来自数组对象,但我想知道是否有正确的方法来做我想要的?
答案 0 :(得分:1)
for ($i = 0; $i < $order['number_of_items']; $i++) {
echo "-".$order[$i]["status"]."-";
}
但是,我建议使用不同的数据结构。您应该拥有指向数组的$order['items']
,而不是将项目作为订单数组中的索引元素。然后你可以使用:
foreach ($order['items'] as $item)
然后您不需要$order['number_of_items']
,您只需使用count($order['items'])
。