2013-03-19 73 views
0

如何查找PHP中2個值之間的數組中存在的數組元素的數量。獲取否。在PHP中的某些值之間的數組元素?

可以說這是我的數組=>

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

我想找到2個值即2和10之間的陣列的長度因此,答案將是3的情況下。如果要搜索的最高值存在於數組中,則應該將其添加到計數中。

2和9之間也長度陣列的是2

希望我清楚與我的問題。任何幫助,將不勝感激。

+0

請允許我問一下,這有什麼限制嗎?像:你不能使用循環或其他東西? – ATaylor 2013-03-19 11:33:29

+0

4到10之間應該是2或1? – hjpotter92 2013-03-19 11:33:58

+0

如果你在你的數組中有相同的值,可以在兩個地方說2,然後從你的數組開始計數的位置開始? – 2013-03-19 11:34:17

回答

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);})); 
} 

見PHP手冊上array_filter() function更多信息。

+0

我想它應該是'$ e> 2',無論如何+1 – 2013-03-19 11:38:23

+0

可調用函數不使用$ max $ min($ e> = 2 && $ e <= 10)?? – Waygood 2013-03-19 11:41:42

+1

@Waygood - 嘿。接得好。我打字太快了。固定的。 – SDC 2013-03-19 11:42:48

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。

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

你知道,這可能會給他整個陣列數。因爲一切都小於最大值或大於最小值。 – ATaylor 2013-03-19 11:38:18

+0

@ATaylor哦,該死!現在修復。謝謝 – hjpotter92 2013-03-19 11:41:49

相關問題