Php 对该数组进行分组和求和

Php 对该数组进行分组和求和,php,mysql,Php,Mysql,我有一个数组,它的输出是: Array ( [winners] => Array ( [0] => Gold Member [1] => CROTCH SNIFFER [2] => TEAM #1 ) [prizeTotal] => 20 ) Array ( [winners] => Array ( [0] => TEAM #1 [1] => CROTC

我有一个数组,它的输出是:

Array ( [winners] => 
Array ( [0] => Gold Member 
        [1] => CROTCH SNIFFER 
        [2] => TEAM #1 )         
        [prizeTotal] => 20 )

Array ( [winners] => 
Array ( [0] => TEAM #1  
        [1] => CROTCH SNIFFER )
        [prizeTotal] => 60 ) 

Array ( [winners] => 
Array ( [0] => Gold Member 
        [1] => TEAM #1 ) 
        [prizeTotal] => 30 )

Array ( [winners] => 
Array ( [0] => TEAM #1 
        [1] => TEAM #2
        [2] => SCREW-NUT-BOLT )
        [prizeTotal] => 90 ) 
  • 请原谅这些名字…这不是我的DB
  • 我不能改变数组在这里的显示方式
  • 既然如此,我该如何分组和求和? 1.对于每个优胜者阵列,在团队名称下方都有一个prizeTotal。该奖金总额应为其上方每个团队名称的值

    范例

    Array ( [winners] => 
    Array ( [0] => Gold Member 
            [1] => CROTCH SNIFFER 
            [2] => TEAM #1 )         
            [prizeTotal] => 20 )
    Gold Member should have 20
    CROTCH SNIFFER should have 20
    TEAM #1 should have 20 AND
    
    Array ( [winners] => 
    Array ( [0] => TEAM #1  
            [1] => CROTCH SNIFFER )
            [prizeTotal] => 60 ) 
    TEAM #1 should have 60
    CROTCH SNIFFER sould have 60....etc....
    
  • 然后我想按团队名称和总和分组,以便显示

    裤裆嗅探器=80 黄金会员=50 团队#1=200 团队2=90


  • 提前感谢…

    您需要创建一个新数组来保存结果,然后针对每个现有数组,检查您是否已经为该团队处理了一个数组

    如果有,只需将prizeTotal添加到存储在该团队的新阵列条目中的prizeTotal


    如果没有,只需将团队条目添加到新阵列中。

    假设您可以将所有阵列收集到一个阵列中,即:

    $arrays = array($array1,$array2,....,$arrayn);
    
    然后

    这将产生如下结果:

    $grouping[TEAM #1] = 200
    $grouping[TEAM #2] = 90
    $grouping[CROTCH SNIFFER] = 200
    ...
    

    我制作了一个模仿mysql
    SUM()
    groupby
    的函数。我希望它能满足您的需要:

               $in_a = array(
                    array("a" => 0,"b"=>0,"s"=> 1),
                    array("a" => 0,"b"=>0,"s"=> 2),
                    array("a" => 1,"b"=>1,"s"=> 1),
                    array("a" => 0,"b"=>1,"s"=> 1),
                    array("a" => 0,"b"=>1,"s"=> 1),
                    array("a" => 1,"b"=>0,"s"=> 1),         
                    array("a" => 0,"b"=>1,"s"=> 1),         
                    array("a" => 1,"b"=>1,"s"=> 1),         
                    array("a" => 1,"b"=>0,"s"=> 1),         
                );//input array exaple
                $group_by_a = array("a","b");//input array will be grouped by these
                $sum_a = array("s"); //'s' values of input will be summed
                $out_a = array(); //this is the output array
    
                foreach($in_a as $in_i => $in)
                {
                    $add = false;
                    foreach($out_a as $out_i => $out)
                    {
                        $add = true;
                        foreach($group_by_a as $group_by)
                            if($in[$group_by] != $out[$group_by])
                            {
                                $add = false; 
                                break;
                            }                   
                        if($add)
                        {
                            foreach($sum_a as $sum)
                                $out_a[$out_i][$sum] += $in[$sum];  
                            break;
                        }
                    }
                    if(!$add)
                    {
                        foreach($group_by_a as $group_by)
                            $out_a[$in_i][$group_by] = $in[$group_by];
                        foreach($sum_a as $sum)
                            $out_a[$in_i][$sum] = $in[$sum];                    
                    }                   
                }
    
    结果是:

    Array
    (
        [0] => Array
            (
                [a] => 0
                [b] => 0
                [s] => 3
            )
    
        [2] => Array
            (
                [a] => 1
                [b] => 1
                [s] => 2
            )
    
        [3] => Array
            (
                [a] => 0
                [b] => 1
                [s] => 3
            )
    
        [5] => Array
            (
                [a] => 1
                [b] => 0
                [s] => 2
            )
    
    )
    

    发布您目前拥有的代码?
    Array
    (
        [0] => Array
            (
                [a] => 0
                [b] => 0
                [s] => 3
            )
    
        [2] => Array
            (
                [a] => 1
                [b] => 1
                [s] => 2
            )
    
        [3] => Array
            (
                [a] => 0
                [b] => 1
                [s] => 3
            )
    
        [5] => Array
            (
                [a] => 1
                [b] => 0
                [s] => 2
            )
    
    )