2014-08-28 135 views
-1

我想基於pid和大小s更新數組,如果產品id和大小都匹配相同的數組元素,那麼它通過添加數量並將它們合併到一個索引中來更新數量。任何幫助都應該不勝感激。
我的代碼是:_更新php多維數組

<?php 

$details = array ("0" => array ("pid" => "402", 
             "q" => "1", 
             "s" => "0" 
            ), 
        "1" => array ("pid" => "403", 
             "q" => "2", 
             "s" => "0" 
            ), 
        "2" => array ("pid" => "402", 
             "q" => "3", 
             "s" => "0" 
            ), 
        "3" => array ("pid" => "403", 
             "q" => "1", 
             "s" => "0" 
            ), 
        "4" => array ("pid" => "405", 
             "q" => "1", 
             "s" => "0" 
            ), 
       ); 

?> 

輸出應該看起來像

輸出:

0-pid 402 q 4 s 0 
1-pid 403 q 3 s 0 
4-pid 405 q 1 s 0 
+0

在請求免費代碼之前,請先付出一些努力。 – ToBe 2014-08-28 09:11:05

回答

2
foreach($details as $p) 
{ 
    $output[$p["pid"]][$p["s"]]["q"]+=$p["q"]; 
} 

輸出

Array 
(
    [402] => Array 
     (
      [0] => Array 
       (
        [q] => 4 
       ) 

     ) 

    [403] => Array 
     (
      [0] => Array 
       (
        [q] => 3 
       ) 

     ) 

    [405] => Array 
     (
      [0] => Array 
       (
        [q] => 1 
       ) 

     ) 

) 

然後,您可以以任何您喜歡的格式顯示陣列

+0

OP沒有在尋找那個,他想合併'q'上的鍵值'pid'。您在這裏沒有正確的「q」值。它的方式很難解釋。 – Sugar 2014-08-28 09:14:59

+0

就是這樣。它根據操作系統的要求,在每個尺寸的pid上合併每個尺寸的q值。'如果產品id和尺寸都匹配相同的數組元素,則它基於pid和尺寸s,然後通過添加數量和合並來更新數量他們在一個索引中' – 2014-08-28 09:20:15

+0

有2'402'pid,'q'值= 1和= 3.合併這些應該給出一個'402','q'值= 4,正如我們在OP期望的輸出。你當前的輸出雖然給'q'= 3。你的輸出實際上不是OP想要的。 – Sugar 2014-08-28 09:24:08