2016-10-20 1 views
-2

그것은 간단한 질문입니다 만, 저를 당혹 :PHP에서 값이 범위 내에있는 경우 어떻게 검색합니까?

$myarray = array(
    array(10,20), 
    array(299, 315), 
    array(156, 199) 
); 

내가 $x 주어진다면, 그 특정 개인 배열 값 중 하나로 사이에 놓여 확인하려면 어떻게합니까? 각 개별 항목 배열을 검색하고 싶습니다. 1020에 다음 299 사이에 315 다음과 156199에 :

예를 들어, 나는 $x 어딘가에 사이 인 경우, 검색 할.

+2

[in \ _array() 및 다차원 배열] 가능한 복제본 (http://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array) –

+0

예, 해당 질문에 155 개의 UPVOTES가있을 수 있습니다. , 그러나 이것 같이 요구되지 않았다. 권리 ?? –

+0

하지만, plz 내 질문 - 그 사이에 거짓말. NOt 'contains'. –

답변

1

이 시도 :

function is_in_array_range($array, $search) { 
    foreach ($array as $value) { 
     $min = min($value); 
     $max = max($value); 

     if ($search >= $min && $search <= $max) { 
      return true; 
     } 
    } 

    return false; 
} 

$myarray = array(
    array(10,20), 
    array(299, 315), 
    array(156, 199) 
); 

is_in_array_range($myarray, 9); // Returns false 
is_in_array_range($myarray, 11); // Returns true 

기능 is_in_array_range()를 두 개의 인수를 취할 것입니다. 배열 및 검사 할 값이 범위 내에 있습니다.

입력되면 배열의 모든 요소를 ​​반복합니다. 중첩 배열 (min()max() 함수)의 가장 높은 값과 가장 낮은 값을 얻을 때마다 찾고있는 값이 그 사이에 있는지 확인합니다. 이 경우 true를 반환합니다 (이 경우에도 기능이 중지됨). true에 도달하지 못하면 값을 찾을 수 없으므로 함수의 끝에서 false를 반환합니다.

+1

좋은 접근 방식을 사용하고 있습니다. 하지만 같은 것을 두 번 게시하는 것은별로 사용하지 않습니다. 값에 min 및 max을 ​​사용하는 것에 대해 생각하지 않았습니다. 또한 대답은 당신이 정확히 한 일에 대한 약간의 설명과 함께 OP를 위해 완성 될 것입니다. – Rimble

+0

@ Rimble 잘 부탁드립니다. – Ivar

+0

@ivar 굉장한 접근입니다. 누군가 내 질문을 upvote 수 있습니다 :) –

0

이 그것을 코드를 할 것

foreach($myarray as $value) 
{ 
if(in_array("10", $value, true)) 
{ 
    echo "Got 10"; 
} 
} 
+0

안녕하세요, 10 및 20을 검색하지 않고 10 달러, 12 달러 ... 19,20 –

관련 문제