我试图找到一个本机PHP函数,它将允许我计算数组中特定值的出现次数.我熟悉array_count_values()函数,但它返回数组中所有值的计数.是否有一个函数允许您传递值并返回该特定值的实例计数?例如:
$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);
$instances = some_native_function(6, $array); //$instances will be equal to 4
Run Code Online (Sandbox Code Playgroud)
我知道如何创建自己的功能,但为什么重新发明轮子?
dec*_*eze 43
function array_count_values_of($value, $array) {
$counts = array_count_values($array);
return $counts[$value];
}
Run Code Online (Sandbox Code Playgroud)
不是原生的,但是来吧,它很简单.;-)
或者:
echo count(array_filter($array, function ($n) { return $n == 6; }));
Run Code Online (Sandbox Code Playgroud)
要么:
echo array_reduce($array, function ($v, $n) { return $v + ($n == 6); }, 0);
Run Code Online (Sandbox Code Playgroud)
要么:
echo count(array_keys($array, 6));
Run Code Online (Sandbox Code Playgroud)
Muh*_*han 12
此解决方案可能接近您的要求
$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);
print_r(array_count_values($array));
Result:
Array
( [1] => 1 ,[2] => 1 , [3] => 3, [4] => 2,[5] =>1, [6] => 4, [7] => 1 )
Run Code Online (Sandbox Code Playgroud)
对于细节.
Abr*_*ver 11
从PHP 5.4.0开始,您可以使用函数数组解除引用来[6]生成以下数组的索引array_count_values():
$instances = array_count_values($array)[6]; //$instances will be equal to 4
Run Code Online (Sandbox Code Playgroud)