2016-05-17 17 views
0

我有一個前面的問題,我已經有點克服了。然而,這導致了一個新問題,在修復時應該按預期工作。將特定產品添加到陣列的Foreach

我創建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) 

的新問題是,現在這個數據需要返回到多個arrays,因爲正在使用的API。除了這些產品之外,我現在幾乎可以開展工作,目前正在添加以前訂單中的產品。使用上面的示例中,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

嘗試這樣的事情

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); 
你想從這個$ APIOrderItem []是它刪除重複
+0

內的重複項感謝您的幫助!只是幾個關於這個問題。 (1)不應該check_key_value_exists($ key,$ value)在開始時有函數嗎?如果函數不包含,我有錯誤。 (2)如果我在開頭有一個函數(並在括號中包含$ APIOrderItem),則產品仍然是重複的。 不過謝謝你幫助我!我真的很喜歡它。 – Jake

+0

我已經設法調整代碼並使其工作!大部分代碼與我添加'unset($ APIOrderItem);'內部'if($ i == 1)'是相同的' – Jake

相關問題