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['items']、配列を指す が必要です。次に、次を使用できます。

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

次に、必要はありません。$order['number_of_items']使用するだけcount($order['items'])です。

于 2013-02-22T23:20:09.493 に答える