2014-08-28 74 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