有没有办法在不使用循环(foreach)的情况下计算数组中值大于10的数量?
$arr=array(5,7,11,67,4,12,15);
$wanted_output=4
$arr=array(5,7,11,67,4,12,15);
$wanted_output=4
只需使用 array_reduce
函数,就不需要使用 count
函数。
echo array_reduce($arr, function ($a, $b) {
return ($b > 10) ? ++$a : $a;
}); // returns 4
$a
用作计数器,$b
是单个数组值。 - Mark Bakerand
而不是 &&
来处理运算符优先级。 - Mark Baker$minVal = 10;
$counter = count(
array_filter(
$myArray,
function($value) use ($minVal) {
return $value > $minVal;
}
)
);
从PHP7.4开始,您可以使用箭头函数语法并避免使用use()
语法将最小阈值传递到array_reduce()
函数中。
代码:(演示)
$array = [5, 7, 11, 67, 4, 12, 15];
$min = 10;
echo array_reduce($array, fn($carry, $item) => $carry + ($item > $min), 0);
// output: 4
$item
和 $min
之间的 true|false 评估分别等于 1|0。
尝试使用 array_count_values,例如:
print_r(array_count_values($my_array));
$my_array = array_filter($my_array, function ($n) {
return $n > 10;
});
echo count($my_array);
使用array_count_values函数:
$array = array(1, 38, 1, 38,35);
print_r(array_count_values($array));
输出:-
Array
(
[1] => 2
[38] => 2
[35] => 1
)
使用array_filter函数:
$arraycount = array_filter($array, function ($n) {
return $n > 10;
});
echo count($arraycount);