Php 对数组数据进行计数

Php 对数组数据进行计数,php,arrays,count,associative-array,Php,Arrays,Count,Associative Array,我需要有4个这样的关联数组,具有相同的4个用户 Array ( [0] => Array ( [userName] => jim [count] => 6 ) [1] => Array ( [userName] => joe [count] => 6 ) [2] => Array ( [userName] => jesse [count] => 36 ) [3] => Array ( [userName] => mark [cou

我需要有4个这样的关联数组,具有相同的4个用户

Array ( [0] => Array ( [userName] => jim [count] => 6 ) [1] => Array ( [userName] => joe [count] => 6 ) [2] => Array ( [userName] => jesse [count] => 36 ) [3] => Array ( [userName] => mark [count] => 2 ) ) 


Array ( [0] => Array ( [userName] => jim [count] => 2 ) [1] => Array ( [userName] => jesse [count] => 2 ) [2] => Array ( [userName] => mark [count] => 16 ) ) 


Array ( [0] => Array ( [userName] => jim [count] => 8 ) ) 


Array ( )
让我们只说他们的名字

$values1
$values2
$values3
$values4
他们可能有全部4个用户,也可能没有任何用户或只有一些用户

我需要合计所有的值,并有一个这样的数组

 $people = array(
    array("name" => "jim", "score" => 33), 
    array("name" => "jesse", "score" => 44),
    array("name" => "mark", "score" => 66),
    array("name" => "joe", "score" => 11)
 );
有没有一种简单的方法可以添加这些值并用所有添加的数据控制一个这样的数组


我相信我可以用蛮力的方法解决这个问题,但我想知道是否有一种干净的方法可以做到这一点

最简单的方法是用这种结构创建一个数组:

$people = array(
    'jim' => 33,
    'jess' => 44
    // ...
);
可以使用此循环创建此阵列:

$people = array();

foreach(array_merge($values1, $values2, $values3, $values4) as $person) {
    $name = $person['name'];
    if(!isset($people[$name])) {
        $people[$name] = 0;
    }
    $people[$name] += $person['score'];
}

此时,可以直接使用此结构,也可以将其转换为所需的格式。

最简单的方法是使用此结构创建数组:

$people = array(
    'jim' => 33,
    'jess' => 44
    // ...
);
可以使用此循环创建此阵列:

$people = array();

foreach(array_merge($values1, $values2, $values3, $values4) as $person) {
    $name = $person['name'];
    if(!isset($people[$name])) {
        $people[$name] = 0;
    }
    $people[$name] += $person['score'];
}
此时,可以直接使用此结构,也可以将其转换为所需的格式。

您可以执行以下操作:

$people = array();

foreach(array_merge($values1, $values2, $values3, $values4) as $k=>$v){
   if(isset($people[$v['username']]){
        $people[$v['username']]['score'] += $v['count'];
   }
   else {
       $people[$v['username']] = array();
       $people[$v['username']]['score'] = $v['count']; 
   }
}
这将为您提供如下结果:

$people = array(
    "jim" => array("score" => 33), 
    "jesse" => array("score" => 44),
    "mark" => array("score" => 66),
    "joe" => array("score" => 11)
 );
您可以这样做:

$people = array();

foreach(array_merge($values1, $values2, $values3, $values4) as $k=>$v){
   if(isset($people[$v['username']]){
        $people[$v['username']]['score'] += $v['count'];
   }
   else {
       $people[$v['username']] = array();
       $people[$v['username']]['score'] = $v['count']; 
   }
}
这将为您提供如下结果:

$people = array(
    "jim" => array("score" => 33), 
    "jesse" => array("score" => 44),
    "mark" => array("score" => 66),
    "joe" => array("score" => 11)
 );

这里有第三种选择,封装为to函数格式。;-)


这里有第三种选择,封装为to-function格式


我想这就是您希望看到它在以下位置发挥作用的原因:


我想这就是你希望看到它在以下方面发挥作用的原因: