2016-10-17 2 views
1

값을 얻는 효율적인 방법이 있습니까? 키가 범위 사이에 있습니까? 예 : . 나는 열쇠가 13 인 값을 원한다. 또는 그 배열에서 13을 포함하는 범위. 두 번째 요소의 범위가 11-25임을 알 수있다. 그래서 나는 그 가치를 얻어야한다. 11-25도 13PHP는 범위 사이에 키가있는 값을 얻습니다.

$array = array(
    '0-10' => 'a Value', 
    '11-25' => 'another Value', 
    '26-50' => 'value', 
    '51-100' => 'another string' 
); 
+0

죄송합니다. –

+0

함수를 살펴보십시오 http://php.net/manual/en/function.array-slice.php –

+0

해당 배열의 키가 범위입니다. 나는 어떤 숫자라도 줄 것이다. 이 함수는 내가 원하는 범위 인 –

답변

1

당신이 무엇을 할 수 있습니다 :

function findInRange($number, $array) 
{ 
    foreach ($array as $key => $value) { 
     list($min, $max) = explode('-', $key); 

     if ($number >= $min && $number <= $max) { 
      return $value; 
     } 
    } 

    return null; 
} 

$number = 13; 
$array = [ 
    '0-10' => 'a Value', 
    '11-25' => 'another Value', 
    '26-50' => 'value', 
    '51-100' => 'another string' 
]; 

$result = findInRange($number, $array); 

var_dump($reesult); 
1

포함되어 있기 때문에 가장 간단한 방법은 array_mapexplode 기능을 다음과 같은 방법을 사용하여 다음과 같습니다

여기
$search_key = 13; 
$result = ''; 

foreach ($array as $k => $v) { 
    $range = array_map('intval', explode('-', $k)); 
    if ($search_key >= $range[0] && $search_key <= $range[1]) { 
     $result = $v; 
     break; 
    } 
} 

print_r($result); // "another Value" 
+0

에 대해 검색을 수행하지만, "-"로 결합 된 숫자 두 개가 아닌 숫자 인 범위가있는 경우. –

+0

oooops. 미안 해요 하나의 숫자가 있다면 나는 x-x 또는 13-13 –

0
$index = 13; 
$value = current(array_filter($array, 
    function($key) use ($index) { 
     if(!is_int(strpos('-', $key))){ 
      return $key == $index; 
     } 
     $range = explode('-', $key); 
     return ($index >= $range[0] && $index <= $range[1]); 
    }, ARRAY_FILTER_USE_KEY)); 
+0

복잡한 알고리즘을 좋아할 수 있습니다 : v –

관련 문제