1

如何在 PHP 中的 2 个值之间查找数组中存在的数组元素的数量。

假设这是我的数组 =>

$a = array(1,2,3,5,10);

我想找到 2 个值之间的数组长度,即 2 和 10。所以在这种情况下答案将是 3。如果要搜索的最大值存在于数组中,则应将其添加到计数中。

2到9之间的数组长度也是2。

希望我对我的问题很清楚。任何帮助,将不胜感激。

4

3 回答 3

6

用于array_filter()将数组过滤到匹配的元素,然后count()在生成的过滤数组上使用。

$a = array(1,2,3,5,10);
print count(array_filter($a, function($e) {return ($e>=2 && $e<=10);}));

希望有帮助。

注意:我在这里使用的带有嵌入式函数的语法需要 PHP v5.3 或更高版本。

[编辑]

把它变成一个简单的可调用函数:

$a = array(1,2,3,5,10);
print countInRange(2,10);

function countInRange($min,$max) {
    return count(array_filter($a, function($e) use($min,$max) {return ($e>=$min && $e<=$max);}));
}

array_filter()有关函数的更多信息,请参阅 PHP 手册。

于 2013-03-19T11:36:34.080 回答
1
$count = 0;
for( $i = 0; $i < count($a); $i++ ) {
  if( $a[$i] <= $max && $a[$i] >= $min )
    $count++;
}
echo $count;
于 2013-03-19T11:36:38.387 回答
0
$count = 0;
$min = 2;
$max = 10;

$a = array(1,2,3,5,10);

foreach($a as $val) {
    if($val > $min && $val <= $max) ++$count;
}

这应该有效,对吧?至少它会找到所有高于最小值但小于/等于最大值的数字。

当然,这也意味着数组 of1, 2, 9, 5将返回 2,因为 9 和 5 都大于 2 且小于 10。

于 2013-03-19T11:35:01.850 回答