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 關注
- 108 瀏覽
添加回答
舉報