查找数组中大于N的个数

时间:2018-06-25 05:37:47

标签: php

如果我有一个索引的PHP数组:

$array = array(2, 12, 23, 34, 36, 36, 36, 56);

我有一个变量:

$number = 30;

如何计算高于$number的“数组位置”的数量?

例如,该函数应返回5,因为有5个数字(34、36、36、36和56)大于30。

编辑:我已经尝试过计算数组值的不同方法,但是我不知道如何计算位置。它让我感到难过。

7 个答案:

答案 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
}

https://3v4l.org/8FoOP

答案 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);