Получать отфильтрованные значения из значений типа массива между диапазоном 10-20

как получить отфильтрованные значения из значений типа массива между диапазоном 10-20. мой массив содержит 10,15,18,25,88,20. Я хочу печатать только между диапазоном 10-20.

Solutions Collecting From Web of "Получать отфильтрованные значения из значений типа массива между диапазоном 10-20"

использовать array_intersect с range

 $input = array(10,15,18,25,88,20); $myrange = range(10,20); $output = array_intersect($input , $myrange ); print_r($output ); 

DEMO

Вы можете использовать array_filter

 function range10_20($var) { return ( $var >= 10 && $var <= 20 ); } $input = array(10,15,18,25,88,20); $output = array_filter($input, 'range10_20'); 

Или что-то типа того:

 $input = array(10,15,18,25,88,20); $range = array( 'from' => 10, 'to' => 20 ); $output = array_filter($input, function ($element) use ($range) { return ( $var >= $range['from'] && $var <= $range['to'] ); }); 

Существует несколько способов фильтрации массива в PHP.

Использование array_filter

 $your_array = array(10,15,18,25,88,20); $filtered = array_filter($your_array, create_function('$var', 'return $var >= 10 && $var <= 20;')); var_export($filtered); 

В бою

Если вы хотите изменить начало диапазона и конец диапазона без изменения кода create_function:

 $your_array = array(10,15,18,25,88,20); $range_start = 10; $range_end = 20; $filtered = array_filter($your_array, create_function('$var', 'return $var >= '.$range_start.' && $var <= '.$range_end.';')); var_export($filtered); 

В бою

$ your_array = array (10,15,18,25,88,20);

Использование цикла foreach:

 $filtered = array(); $range_start = 10; $range_end = 20; foreach ($your_array as $k=>$v) { if ($v >= $range_start && $v <= $range_end) { $filtered[$k] = $v; } } var_export($filtered); 

В бою

Или, если вам не нужно создавать новый массив, но изменить существующий:

 $your_array = array(10,15,18,25,88,20); $range_start = 10; $range_end = 20; foreach ($your_array as $k=>$v) { if (!($v >= $range_start && $v <= $range_end)) { unset($your_array[$k]); } } var_export($your_array); с $your_array = array(10,15,18,25,88,20); $range_start = 10; $range_end = 20; foreach ($your_array as $k=>$v) { if (!($v >= $range_start && $v <= $range_end)) { unset($your_array[$k]); } } var_export($your_array); 

В бою

Любые конкретные требования? Стандартный массив php не поддерживает поиск диапазона.

У меня есть 2 предложения: 1) сортировать массив, а затем искать свой верхний предел, что угодно до того, как верхний предел будет вашим результатом. 2) пересечь массив при прохождении, примените условия вашего диапазона.