以这样的内容开头:
阵列 ( 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);