2016-05-17 13 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

相关问题