没有精心设计的if子句,如何在PHP中找到两个数组子值之间的数组匹配?

时间:2013-01-23 04:56:05

标签: php arrays loops if-statement multidimensional-array

我需要根据PHP中的最小值和最大值在数组中查找匹配项。如果没有精心设计的foreach,if,elseif,then子句,我怎样才能有效地获得匹配的行?

例如......给定数组$arr(下方)和数字4,如何返回数组行12和{{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)); 23。但我希望它适用于1到100之间的任何整数。

1 个答案:

答案 0 :(得分:3)

$number = 4;
$result = array_filter($arr, function ($elem) use ($number) {
   return $elem['min'] <= $number && $number <= $elem['max'];
});