Определить, находится ли значение в диапазоне массива

У меня есть массив, который выглядит так:

[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
)

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

Спасибо!

0

Решение

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]);
1

Другие решения

$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);
0

По вопросам рекламы [email protected]