0

私はこれを持っています:

$array = array(1 => array('min' => 0, 'max' => 0.5, 'value'=>12.5),
2 => array('min' => 0.5, 'max' => 1, 'value'=>13.5),
3 => array('min' => 1, 'max' => 1.5, 'value'=>15.5),
4 => array('min' => 1.5, 'max' => 2, 'value'=>18.5));

次に、変数があります(もちろん動的です)

$number= 1.1;

$numberとの間1にある値15.5を取得するにはどうすればよい1.5ですか?

4

2 に答える 2

3

アレイを反復処理します。

function getValue($array, $number){
  foreach($array as $params):
    if($params['min'] < $number and $params['max'] > $number)
      return $params['value'];
  endforeach;
}
于 2012-06-19T16:32:07.733 に答える
1

過度に複雑なmap-reduceの方法:

http://codepad.org/s6T86VYf

$array = array(
1 => array('min' => 0, 'max' => 0.5, 'value'=>12.5),
2 => array('min' => 0.5, 'max' => 1, 'value'=>13.5),
3 => array('min' => 1, 'max' => 1.5, 'value'=>15.5),
4 => array('min' => 1.5, 'max' => 2, 'value'=>18.5));

$number= 1.1;

function reduce( $row ){
  global $number;
  return $row['min'] <= $number
      && $row['max'] >= $number;
}

function map( $row ){
  return $row['value'];
}

$reduced = array_filter( $array, 'reduce');

$mapped = array_map('map', $reduced );

print_r( $mapped );
于 2012-06-19T16:50:55.247 に答える