我有一个PHP代码,其中我有一个带键和值对的关联数组。 数组采用以下格式。
$info = array();
$info[0] = array(
'name1' => 'type1',
'count' => '27'
);
$info[1] = array(
'name1' => 'Type2',
'count' => '11'
);
$info[2] = array(
'name1' => 'Type1',
'count' => '5'
);
$info[3] = array(
'name1' => 'Type1',
'count' => '12'
);
$info[4] = array(
'name1' => 'type2',
'count' => '10'
);
我需要一个输出,其中我将得到type1和type2的计数,分别为44和22,这将来自array的count键。所以我需要像type1这样的不同键的值发生两次,所以我需要类似type1和类型2有计数..请指导我如何追求......
foreach($count as $array){
echo $array;
}
答案 0 :(得分:1)
最明显的解决方案是迭代数组:
$counts = array();
foreach($info as $elem){
$counts[$elem['name1']] += $elem['count'];
}
var_dump($counts);
如果您希望type1
和Type1
成为相同的密钥(不区分大小写),您可以执行以下操作:
foreach($info as $elem){
$counts[strtolower($elem['name1'])] += $elem['count'];
}
答案 1 :(得分:0)
$new = array();
foreach ($info as $v)
{
// Normalize the key names
$key = ucfirst($v['name1']);
if (isset($new[$key]))
{
$new[$key] += $v['count'];
}
else
{
$new[$key] = $v['count'];
}
}
...所以print_r($new);
会给你这个:
Array
(
[Type1] => 44
[Type2] => 21
)
答案 2 :(得分:0)
这是我的看法。
function getTypeArray($arr, $type) {
return array_filter($arr, function($item) use($type) {
return strtolower($item['name1']) == $type;
});
}
function sumArray($arr) {
return array_sum(array_map(function($item) {
return $item['count'];
}, $arr));
}
$type1_count = sumArray(getTypeArray($info, 'type1'));
$type2_count = sumArray(getTypeArray($info, 'type2'));
print 'Type1: '.$type1_count;
print 'Type2: '.$type2_count;