1

PHP の最小値と最大値に基づいて、配列内の一致する項目を見つける必要があります。精巧な foreach,if,elseif,then 句を除いて、一致する行を効率的に取得するにはどうすればよいですか?

たとえば... 配列$arr(以下) と数値が与えられた場合、配列行、、および4を返すにはどうすればよいですか?123

$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、および である必要があり4ます。しかし、1 から 100 までの任意の整数に対して機能すると思います。

4

1 に答える 1

3
$number = 4;
$result = array_filter($arr, function ($elem) use ($number) {
   return $elem['min'] <= $number && $number <= $elem['max'];
});
于 2013-01-23T05:00:32.360 に答える