根据其他数组元素对数组元素进行分组


grouping array elements according to other array elements

以这样的内容开头:

阵列 (  0 =>  阵列 (    'co' => '1',    'lo' => 'aaa',  ),  1 =>  阵列 (    'co' => '1',    'lo' => 'bbb',  ),  2 =>  阵列 (    'co' => '1',    'lo' => 'ccc',  ),  3 =>  阵列 (    'co' => '1',    'lo' => 'aaa',  ),  4 =>  阵列 (    'co' => '1',    'lo' => 'bbb',  ))

然后用索引"lo"对数组元素进行分组,计算伴随它们的"co"的值,最终得到类似于:

阵列 (  aaa => 2,  bbb => 2,  ccc => 1)

我同意其他人关于显示您到目前为止尝试过的代码的观点。话虽如此,这应该有效:

$array = array (
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  array (
    'co' => '1',
    'lo' => 'bbb',
  ),
  array (
    'co' => '1',
    'lo' => 'ccc',
  ),
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  array (
    'co' => '1',
    'lo' => 'bbb',
  )
);
$new_array = array();
foreach($array as $a){
  if(!array_key_exists($a['lo'], $new_array)){
    $new_array[$a['lo']] = intval($a['co']);
  }else{
    $new_array[$a['lo']] = $new_array[$a['lo']] + intval($a['co']);
  }
}
print_r($new_array);

我们正在循环遍历数组,创建一个新的数组键(如果不存在),并使用 'co' 中指定的数字添加到数组键值(如果它已经存在)。在尝试解析/添加到新数组之前,您可能需要进行一些额外的检查,以确保'co''lo'作为数组键存在于原始数组中。

作为旁注,无需将原始数组的键指定为数字,因为数组会自动编制索引。请注意,我在声明数组时删除了这些数字。

像这样吗?

$dataArray = array (
    0 =>
    array (
        'co' => '1',
        'lo' => 'aaa',
    ),
    1 =>
    array (
        'co' => '1',
        'lo' => 'bbb',
    ),
    2 =>
    array (
        'co' => '1',
        'lo' => 'ccc',
    ),
    3 =>
    array (
        'co' => '1',
        'lo' => 'aaa',
    ),
    4 =>
    array (
        'co' => '1',
        'lo' => 'bbb',
    )
);
$finalResults = array();
foreach($dataArray as $data){
    if(isset($finalResults[$data['lo']])){
        $finalResults[$data['lo']]++;
    }else{
        $finalResults[$data['lo']] = 1;
    }
}

print_r($finalResults);

你来了;-)

$in=array (
  0 => 
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  1 => 
  array (
    'co' => '1',
    'lo' => 'bbb',
  ),
  2 => 
  array (
    'co' => '1',
    'lo' => 'ccc',
  ),
  3 => 
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  4 => 
  array (
    'co' => '1',
    'lo' => 'bbb',
  )
);
$out= array();
for($i=0;$i<count($in);$i++)
{
    $out[$in[$i]['lo']]=0;
}
for($i=0;$i<count($in);$i++)
{
    $out[$in[$i]['lo']]+=$in[$i]['co'];
}
print_r($out);