从另一个数组中正确提取嵌入数组

时间:2013-02-22 22:33:38

标签: php arrays

我正在尝试使用标准的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()函数来确定我打印的内容是否来自数组对象,但我想知道是否有正确的方法来做我想要的?

1 个答案:

答案 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'])