得到不。 PHP中某些值之间的数组元素?

时间:2013-03-19 11:31:25

标签: php arrays

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

我想这是我的数组=>

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

我想找到2个值之间的数组长度,即2和10.因此,答案将是3。如果要搜索的最高值存在于数组中,则应将其添加到计数中。

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

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

3 个答案:

答案 0 :(得分:5)

使用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() function的更多信息,请参阅PHP手册。

答案 1 :(得分:0)

$count = 0;
$min = 2;
$max = 10;

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

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

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

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

答案 2 :(得分:0)

$count = 0;
for( $i = 0; $i < count($a); $i++ ) {
  if( $a[$i] <= $max && $a[$i] >= $min )
    $count++;
}
echo $count;