如何在PHP中查找数组中2个值之间的数组元素数。
假设这是我的阵列=>
$a = array(1,2,3,5,10);
我想找到2个值之间的数组长度,即2和10。因此,在这种情况下,答案是3。如果要搜索的最高值出现在数组中,则应将其添加到计数中。
阵列在2和9之间的长度也是2。
希望我的问题很清楚。如有任何帮助,我们将不胜感激。
使用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手册。
$count = 0;
for( $i = 0; $i < count($a); $i++ ) {
if( $a[$i] <= $max && $a[$i] >= $min )
$count++;
}
echo $count;
$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。