如果我有一个索引的PHP数组:
$array = array(2, 12, 23, 34, 36, 36, 36, 56);
我有一个变量:
$number = 30;
如何计算高于$number
的“数组位置”的数量?
例如,该函数应返回5
,因为有5个数字(34、36、36、36和56)大于30。
编辑:我已经尝试过计算数组值的不同方法,但是我不知道如何计算位置。它让我感到难过。
答案 0 :(得分:1)
您可以使用array_reduce来完成此任务:
$array = array(2, 12, 23, 34, 36, 36, 36, 56);
$number = 30;
$cnt = array_reduce($array, function ($carry, $item) use ($number) {
if ( $item > $number ) {
$carry++;
}
return $carry;
});
echo $cnt;
答案 1 :(得分:1)
也可以使用
array_reduce
—使用回调函数将数组迭代地减少为单个值示例:
$array = array(2, 12, 23, 34, 36, 36, 36, 56);
$number = 30;
echo array_reduce($array, function($ret, $val) use ($number) {
return $ret += $val > $number;
});
或将数字硬编码到回调中
echo array_reduce($array, function($ret, $val) {
return $ret += $val > 30;
});
答案 2 :(得分:1)
作为另一种选择,使用array_filter()
从不需要的数组中删除元素,然后仅link: function(scope, element, attrs) {
element.on('change', function(e) {
var reader = new FileReader();
reader.onload = function(e) {
scope.$apply(function() {
scope.onReadFile({$content:e.target.result});
});
};
reader.readAsText((e.srcElement || e.target).files[0]);
});
}
其余列表...
count()
$array = array(2, 12, 23, 34, 36, 36, 36, 56);
$number = 30;
$gtn = array_filter($array, function($value) use ($number) { return $value > $number; });
echo count($gtn);
将包含数字$gtn
,这可能对代码中的其他内容很有用。
答案 3 :(得分:1)
您不需要迭代整个数组。
如果您首先对数组进行排序,那么一旦发现更大的数字,就可以中断循环并从那里使用键值。
$array = array(2, 12, 23, 34, 36, 36, 36, 56);
Sort($array);
$number = 30;
Foreach($array as $key => $val) If($val >= $number) break;
$larger = array_slice($array, $key);
Echo count($larger) . "\n";
Var_dump($larger);
输出:
5 //echo
array(5) { // var_dump
[0] => 34
[1] => 36
[2] => 36
[3] => 36
[4] => 56
}
答案 4 :(得分:0)
尝试以下代码:
page.click
此平台不建议编写代码。因此,您应该在提出问题之前先尝试一下。下次要小心。
答案 5 :(得分:0)
您可以使用array_filter迭代数组以找到最大的数组元素。
$num = 30;
$array = array(2, 12, 23, 34, 36, 36, 36, 56);
$a = array_filter($array, function($value) use( $num ){
return $num < $value;
});
print_r($a);
输出
Array
(
[3] => 34
[4] => 36
[5] => 36
[6] => 36
[7] => 56
)
答案 6 :(得分:0)
使用数组reduce并使代码简短
$array = [2, 12, 23, 34, 36, 36, 36, 56];
$number = 30;
$totalNumberOfItems = array_reduce($array, function ($sum, $item) use ($number) {
if($item > $number)
$sum++;
return $sum;
});
Var_dump($cnt);