如果没有详细的if子句,如何在PHP中找到两个数组子值之间的数组匹配?
我需要根据PHP中的最小值和最大值在数组中查找匹配项。如果没有详细的foreach、if、elseif、then子句,如何有效地获取匹配行 例如。。。给定数组如果没有详细的if子句,如何在PHP中找到两个数组子值之间的数组匹配?,php,arrays,loops,if-statement,multidimensional-array,Php,Arrays,Loops,If Statement,Multidimensional Array,我需要根据PHP中的最小值和最大值在数组中查找匹配项。如果没有详细的foreach、if、elseif、then子句,如何有效地获取匹配行 例如。。。给定数组$arr(如下)和数字4,如何返回数组行1、2和3 $arr = array( 0 => array( 'min' => 1, 'max' => 1, 'name' => 'alpha'), 1 => array( 'min' => 1, 'max' => 9
$arr
(如下)和数字4
,如何返回数组行1
、2
和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
和4
。但我希望它能适用于1到100之间的任何整数。$number=4;
$number = 4;
$result = array_filter($arr, function ($elem) use ($number) {
return $elem['min'] <= $number && $number <= $elem['max'];
});
$result=array\u filter($arr,function($elem)use($number){
返回$elem['min']foreach
有什么问题?它似乎不需要那么复杂……考虑到array\u filter
的优雅,为什么要选择foreach
?如果我的现实生活场景中的$arr
中有数百个项目,而不是7个?foreach
循环或冗长的if
/elseif
/则
子句如果不是绝对必要的话也会很麻烦。下面的解决方案完美地说明了这一点。