2014-11-15 2 views
0

У меня есть массив, который выглядит следующим образом:Определить, если значение находится в диапазоне массива

[age-pref] => Array 
     (
      [0] => 31-35 
     ) 

определить, если возраст студента в этом диапазоне этим:

$search_age = $filters['age-pref']; 

list($age_from, $age_to) = explode('-', $search_age[0]); 
if(!empty($age_from) && !empty($age_to)){ 
    $result_age = ($student_field['student_age'][0] >= $age_from && $student_field['student_age'][0] <= $age_to) ? true : false; 
}else{ 
    $result_age = true; 
}//endif 

Возраст $student_field['student_age'][0] - это возраст. Однако, если массив выглядит так:

[age-pref] => Array 
     (
      [0] => 31-35,36-40 
     ) 

Мне сложно сравнивать их. Может ли кто-нибудь помочь с логикой здесь?

Спасибо!

ответ

1
function isAgeInRange($age, $ranges) { 
    if (empty($ranges)) return true; 
    foreach (explode(',', $ranges) as $range) { 
     $range = trim($range); 
     list($from, $to) = explode('-', $range); 
     if ($age >= $from && $age <= $to) return true; 
    } 
    return false; 
} 

$result_age = isAgeInRange($student_field['student_age'][0], $filters['age-pref'][0]); 
0
$student_age = 43; 
$age_pref = array(
    "31-35,36-40" 
); 

function inrange($age, $range) 
    { 
    $chunks = explode(",", $range[0]); 
    foreach($chunks as $chunk) 
     { 
     $val = explode("-", $chunk); 
     if ($age >= (int)$val[0] && $age <= (int)$val[1]) 
      { 
      return true; 
      } 
     } 
    } 

echo inrange($student_age, $age_pref); 
Смежные вопросы