从这样的事情开始:
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', ) )
然后将索引为'lo'的数组元素组合在一起,计算伴随它们的'co'值,最终得到类似于:
array ( aaa => 2, bbb => 2, ccc => 1 )
答案 0 :(得分: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'
作为原始数组中的数组键存在。
作为旁注,不需要将原始数组的键指定为数字,因为数组会自动编入索引。请注意,我在声明数组时删除了这些数字。
答案 1 :(得分:0)
喜欢这个吗?
$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);
答案 2 :(得分:0)
你在这里; - )
$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);