2016-05-17 18 views
0

私は多少克服した以前の問題がありました。しかし、これにより、修正されたときに意図したとおりに動作する新しい問題が発生しました。特定の製品をアレイに追加するには、

私は(もともと第一の問題点であった)CSVファイルから受注arrayを作成していると注文(商品、住所など)からデータを抽出するために管理していると一緒に印刷します。例えば、csvファイルのようなすべてを一緒に印刷し2受注が含まれています

Order: Order1 
Recipient: Timmy 
Address: 123 Street 
Products: 
Table (Quantity: 1) 
Cup (Quantity 4) 

Order: Order2 
Recipient: Billy 
Address: 456 Street 
Products: 
Chair (Quantity 5) 

という新たな問題が今、このデータがあるために使用されているAPIの複数のarraysに戻ってする必要があります。私はこれを、以前の注文からの製品を現在追加している製品とは別にほとんど働いています。上記の例を使用して、arrayは、以下のようになります。

//Order1 
array(2) 
{ 
    [0]=> array(7) 
    { 
     ["Product"]=> string(13) "Table" 
     ["Quantity"]=> float(1) 
    } 

    [1]=> array(7) 
    { 
     ["Product"]=> string(13) "Cup" 
     ["Quantity"]=> float(4) 
    } 
} 

//Order2 
array(3) 
{ 
    [0]=> array(7) 
    { 
     ["Product"]=> string(13) "Table" 
     ["Quantity"]=> float(1) 
    } 

    [1]=> array(7) 
    { 
     ["Product"]=> string(13) "Cup" 
     ["Quantity"]=> float(4) 
    } 

[2]=> array(7) 
    { 
     ["Product"]=> string(13) "Chair" 
     ["Quantity"]=> float(5) 
    } 
} 

上記のように、以前のための製品を二次に複製されます。他の注文の詳細は意図したとおりに動作し、別のレコードとしてデータベースに挿入されます(注文番号、住所など)。私は私が間違っているつもりだところわからないんだけど、これは製品arrayのためのコードの一部です:

foreach ($Order[$OrderNumber][$RecipientName][$Address1] as $key => $value) 
    { 
     $APIOrderItem[] = array('Product' => $key, 
           'Quantity' => $value); 
    } 

$Items = array('APIOrderItem' => $APIOrderItem); 

前のコードが必要な場合は、私は喜んでこの記事を編集します。

+0

のようなものを試してみてください? – JYoThI

+0

@jothiこれは、データベースにデータを送信する実際の部分であり、以前の注文から製品を追加しています。 – Jake

+0

@jothiそう、それは$ APIOrderItem [] – Jake

答えて

0

は、あなたが、これは$ APIOrderItem []、それをあるから重複を削除したいこの

check_key_value_exists($key,$value) 
{ 
foreach($APIOrderItem as $row) 
{ 


    if($key==$row['Product'] && $value==$row['Quantity']) 
    { 

     return true; 

    } 


} 

return false; 
} 


$i=1; 
foreach ($Order[$OrderNumber][$RecipientName][$Address1] as $key => $value) 
{ 

    if($i==1) 
    { 

    $val=false; 
    } 
    else 
    { 

     $val = check_key_value_exists($key,$value); 

    } 


    if($val===false) 
    { 
     //new $key and $value insert here 

    $APIOrderItem[] = array('Product' => $key, 
          'Quantity' => $value); 


    } 
    else 
    { 

     //$key and $value alreday exists in the $APIOrderItem array so dont need to insert again 


    } 

    $i++; 
} 

$Items = array('APIOrderItem' => $APIOrderItem); 
+0

内の重複を削除するあなたの助けをありがとう!これに関するちょっとした質問です。 (1)check_key_value_exists($ key、$ value)には機能がありませんか?機能が含まれていないとエラーが発生しています。 (2)これを最初の関数で使用している場合(括弧内に$ APIOrderItemを含める)、製品はまだ複製されています。 しかし、私を助けてくれてありがとう!私は本当にそれをappriciate。 – Jake

+0

私はコードを修正して動作させました!ほとんどのコードは 'if($ i == 1)'の中で 'unset($ APIOrderItem);'を追加したものと同じです。 – Jake

関連する問題