2011-03-06 48 views
1

这里不会覆盖原始值是我的地盘 http://69.231.195.173:8888/iadprint/products?product=flyers如何创建多维数组的集合,当新的推

当用户选择,涉及到的传单产品和印刷机添加到购物车数的选择

。这是执行的代码。

if(isset($_POST['btnAddToCart']) && isset($_GET['product'])) 
    { 
     $product_id = $action->getProductID($_GET['product']); 

     $attribute[$product_id] = array(); 


     foreach ($_POST as $field=>$hash) 
     { 
      $hash = $security->clean_numeric($hash); 

      if($field != "btnAddToCart" && $field != 'price' && !empty($hash)) 
      { 
       array_push($attribute[$product_id], $hash); 

      } 
     } 

     $_SESSION['iadprint_cart'] = $attribute; 
} 

其被形成在阵列看起来像这样

Array 
(
    [10] => Array 
     (
      [0] => 30 
      [1] => 36 
     ) 

) 

该主阵列10是指传单产品ID名称内。里面的30和36是选择的ID。

如果您选择名片并做出选择并添加到购物车中,那么您可能会遇到这样的问题,例如将图片放入阵列()中的新图片。数据被覆盖。我使用array_push,它应该工作,但它不是。我究竟做错了什么?

如果你需要更多的解释让我知道

感谢

有谁知道?我没有得到回应。请帮助我,我真的被卡住了几天了。

+0

+1良好表现 – Wazzzy 2011-03-06 07:37:15

+0

我认为这个问题是在这里$属性[$的product_id =阵列();重置阵列并添加新数据。但不知道我会如何写它。 – 2011-03-06 08:44:16

+0

不是这不是问题。此处还有很多令人困惑的部分。当数据被覆盖? – Shoe 2011-03-06 11:18:58

回答

0

解决方案: -

如果你想从第二个数组的数组元素添加到第一阵列,而不是覆盖从第一数组中的元素而不是重新索引,使用+阵列union运算

$a = array(10 => array(25,26)); 
$b = array(22 => array(45,66)); 
$c = $a + $b; 
print_r($c); 

输出: -

Array 
(
    [10] => Array 
     (
      [0] => 25 
      [1] => 26 
     ) 

    [22] => Array 
     (
      [0] => 45 
      [1] => 66 
     ) 
) 

把钥匙是在这种情况下保存。

从 您发布有关这一问题的其他问题相同的答案: - merging a multi-dimensional array into another multi-dimensional array

0

我认为这将是有益的in_array().

+0

以及事情是我不能推入一个新的数组,所以说我想推动[11] =>数组([0] => 11,[1] => 12)它应该工作,但它没有。那里不存在11个。所以如果我要添加我提到的,即使它不存在,它也会写。 – 2011-03-06 07:40:32

+0

您可以使用此功能,但它不是正确的做法。 $ result = array_unique($ hash); – Wazzzy 2011-03-06 07:45:06

+0

对不起,我没有得到你的话。我会推动新的价值观。我将使用in_array()一旦我有能力推入新的数组,然后我会检查并在添加重复之前看到 – 2011-03-06 07:47:04