0

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

4

1 回答 1

1
for ($i = 0; $i < $order['number_of_items']; $i++) {
  echo "-".$order[$i]["status"]."-";
}

但是,我建议使用不同的数据结构。而不是将项目作为 order 数组中的索引元素,您应该有$order['items'],它指向一个数组。然后你可以使用:

foreach ($order['items'] as $item)

那你就不需要$order['number_of_items']了,直接用就行了count($order['items'])

于 2013-02-22T23:20:09.493 回答