我需要根据PHP中的最小值和最大值在数组中查找匹配项。如果没有精心设计的foreach,if,elseif,then子句,我怎样才能有效地获得匹配的行?
例如......给定数组$arr
(下方)和数字4
,如何返回数组行1
,2
和{{1 }}?
3
我希望把它变成一个功能。像这样:
$arr = array(
0 => array( 'min' => 1, 'max' => 1, 'name' => 'alpha'),
1 => array( 'min' => 1, 'max' => 9, 'name' => 'beta'),
2 => array( 'min' => 1, 'max' => 19, 'name' => 'gamma'),
3 => array( 'min' => 2, 'max' => 29, 'name' => 'delta'),
4 => array( 'min' => 10, 'max' => 100, 'name' => 'epsilon'),
5 => array( 'min' => 20, 'max' => 100, 'name' => 'zeta'),
6 => array( 'min' => 30, 'max' => 100, 'name' => 'eta')
);
上面的预期结果应该是行function findMatchingRows($n) {
$arr = /*** see above ***/;
/*** your answer! ***/
return $matchingRows;
}
$n = 12;
print_r(findMatchingRows($n));
,2
和3
。但我希望它适用于1到100之间的任何整数。
答案 0 :(得分:3)
$number = 4;
$result = array_filter($arr, function ($elem) use ($number) {
return $elem['min'] <= $number && $number <= $elem['max'];
});