2014-03-05 68 views
0

林創建的製品陣列,每個具有一個ID和得分:PHP更換數組值

$savedProducts = array('product' => array("product_id" => $product_id,"product_score" => $score)); 

我希望能夠通過使用作爲PRODUCT_ID標識符更新得分。

我已經試過:

foreach($savedProducts as $key => $val) 
{ 

    if ($val == $property_id) 
    {     
     $savedProducts[$key] = $score; 
     break; 
    } 
} 

這使添​​加新的數組元素,而不是更新原來的。

我認爲問題是我的初始數組設置然後與編輯的不匹配。

初始陣列:

Array 
(
    [0] => Array 
     (
      [product] => Array 
       (
        [product_id] => 125026 
        [product_score] => 4 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [product] => Array 
         (
          [product_id] => 125026 
          [product_score] => 4 
         ) 

       ) 

     ) 

) 

所以它不斷addding元素,而不是更新現有的:

Array 
(
    [product] => Array 
     (
      [product_id] => 125026 
      [product_score] => 5 
     ) 

) 

試圖更新比分後。

+0

如何'$ savedProperties'樣子:

$savedProducts = array_column($savedProducts, NULL, 'product_id'); 

那麼你就可以訪問你的產品? – fedorqui

+0

有了這個數組結構,你只能有一個'產品',因爲新增加的條目會覆蓋密鑰?!或者「產品」只是其他事物的佔位符? –

+0

你似乎有一個savedProducts和一個savedProperties,我猜他們應該是一樣的。這將使改變你的陣列很容易:-) – vogomatix

回答

0

請試試這個

foreach($savedProducts as $key => $val) 
{ 
if($val['product_id'] == $property_id) 
{     
    $savedProperties[$key]['product_score'] = $score; 
    break; 
} 
} 
+0

我然後得到注意:未定義的索引:product_id – BobFlemming

1

與PHP 5.5用途:

$savedProducts[$product_id] 
+0

注意:未定義偏移量:125026(其中數字是我的product_id),這就是PHP5.5.7 – BobFlemming

+0

可以你'print_r'你的'$ savedProducts'並將其附加到你的問題 –

+0

添加數組 – BobFlemming