3 回答
TA贡献1815条经验 获得超10个赞
您可以使用array_reduce:
$stats = array_reduce($array, static function ($stats, $entry) {
$stats[$entry[0]] = ($stats[$entry[0]] ?? 0) + ($entry[1] === 'YES' ? 1 : 0);
return $stats;
});
这将建立一个数组,将其初始值设置为 0,并且只要找到 a,就会将其递增 1。$statsYES
演示:https://3v4l.org/NmZ7G
TA贡献1805条经验 获得超10个赞
如果您只需要“YES”的计数,则下面的计数将输出计数。
$count_array = [];
foreach($array as $values){
if(!isset($count_array[$values[0]])){
$count_array[$values[0]] = 0;
}
if($values[1] === 'YES'){
$count_array[$values[0]] ++;
}
}
print_r($count_array);
TA贡献1820条经验 获得超10个赞
(与@Jeto array_reduce没有什么不同。
一个简单的前言:
<?php
$data =
[
['Brian', 'YES'],
['Brian', 'YES'],
['Charles', 'NO'],
['Charles', 'YES'],
['Nicola', 'NO']
];
foreach($data as list($name, $yes_no))
$yes_counts[$name] = ($yes_counts[$name] ?? 0) + (int) ($yes_no === 'YES');
var_export($yes_counts);
输出:
array (
'Brian' => 2,
'Charles' => 1,
'Nicola' => 0,
)
- 3 回答
- 0 关注
- 86 浏览
添加回答
举报