2013-05-17 1 views
4

숫자를 저장하는 배열이 있습니다. 숫자의 수는 시간에 따라 다릅니다. 번호가있는 다른 변수가 있는데 어떤 범위 내에서 $num이 떨어지는 지 알아야합니다. 지정된 배열 범위에 주어진 숫자가 있는지 확인하는 방법은 무엇입니까?

$ar = array(0, 32, 64, 96, 128, 160, 192, 224); 

$num = 44; 

가 어떻게이 균열 않습니다 (64 이상 (32)보다 더 적은) (64)에 해당 $num 위의 경우는?

+0

첫 번째 종류의 답 –

+0

이 ØHankyPankyØ @ 배열은 범위가 아닌 사용하는 번호가 포함되어 있습니다. – enenen

답변

6
$ar = array(0, 32, 64, 96, 128, 160, 192, 224); 

$num = 44; 

$range = min(array_filter($ar, function($i) use($num) { 
    return $i > $num; 
})); 

var_dump($range); 

온라인 데모 : 배열이 다음 수의 인덱스 다음 위 아래 하나 하나를 찾을 http://ideone.com/KV6MWD

+0

아주 좋은 해결책! –

+1

나는이 Zmayte를 좋아한다. 'array_filter()'만 종료하는 좋은 방법이 있다면. – alex

+0

정렬 된 배열을 사용하면 선형 스캔에 소요되는 O (n) 시간 대신 O (log n) 시간에이를 수행 할 수도 있습니다. 왼쪽 선택과 오른쪽 선택이 귀하의 전화 번호보다 낮을 때까지 이진 검색을 수행하면됩니다. – SubSevn

관련 문제