2012-09-11 42 views
0

有一個陣列:PHP函數如果數屬於區間

$bounds = array([0]=>array('lower'=>2,'upper'=>5), 
       [1]=>array('lower'=>0,'upper'=>3)); 

和可變:

$val = 4; 

是否有任何PHP函數,可以說$val是否屬於任何區間由$bounds數組中的'lower'和'upper'邊界定義?在這個例子中,4屬於第一區間[2; 5]。所以,答案應該是「真實的」。

+2

是。 '> ='和'<='。 – Tchoupi

回答

2

我不知道任何。你可能需要編碼。像這樣的事情會做:

function isFromInterval($bounds, $val) { 
    foreach ($bounds as $value) { 
     if ($val >= $value['lower'] && $val <= $value['upper']) { 
      return true; 
     } 
    } 
    return false; 
} 
2

你將不得不作出一個循環這樣

$val = 4; 
$key_id = FALSE; 

foreach($bounds as $key => $data){ 
    if($val <= $data['upper'] AND $val >= $data['lower']){ 
     $key_id = $key; 
     break; 
    } 
} 

if($key_id !== FALSE){ 
    // found something 
    // $bounds[$key_id] is your result in the array 
} else { 
    // found nothing 
} 

其功能

function find_range($bounds=array(), $val=0, $return_key=TRUE){ 
    if(is_array($bounds) === FALSE){ 
     $bounds = array(); 
    } 

    if(is_numeric($val) === FALSE){ 
     $val = 0; 
    } 

    if(is_bool($return_key) === FALSE){ 
     $return_key = TRUE; 
    } 

    $key_id = FALSE; 

    foreach($bounds as $key => $data){ 
     if($val < $data['upper'] AND $val > $data['lower']){ 
      $key_id = $key; 
      break; 
     } 
    } 

    if($key_id !== FALSE){ 
     return ($return_key === TRUE ? $key_id : TRUE); 
    } else { 
     return FALSE; 
    } 
} 
1

沒有數組,但你可以這樣做:

$bounds = array(3=>array('lower'=>2,'upper'=>5), 
       4=>array('lower'=>0,'upper'=>3)); 

$val = 4; 

foreach($bounds as $num => $bound){ 
    if(max($bound) >= $val && $val >= min($bound)){ 
     echo $num; 
    } 
} 
3

我不認爲有一個內置函數來做到這一點。

但是,您可以用foreach聲明做到這一點:

function check_interval($bounds, $val) { 
    foreach ($bounds as $array) { 
     if($array['lower'] <= $val && $array['upper'] >= $val) 
      return true; 
    } 
    return false; 
} 
+0

+1我喜歡你寫代碼的方式:D – Kuro

+0

@Kuro,:D謝謝! – Zagorax