1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| function getBeforeOrAfter($Number, $NumberRangeArray,$keys='monery'){ $w = 0; $c = -1; $abstand = 0; $l = count($NumberRangeArray);
for($pos=0; $pos < $l; $pos++){ $n = $NumberRangeArray[$pos][$keys]; $abstand = ($n < $Number) ? $Number - $n : $n - $Number; if ($c == -1){ $c = $abstand; continue; }else if ($abstand < $c){ $c = $abstand; $w = $pos; } }
if ($Number < $NumberRangeArray[$w][$keys]) {
return $NumberRangeArray[$w];
} return $NumberRangeArray[$w]; }
$arr_test = [ [ 'id'=>1, 'level'=>'员工', 'monery'=>100 ], [ 'id'=>2, 'level'=>'主管', 'monery'=>300 ], [ 'id'=>3, 'level'=>'总监', 'monery'=>1000 ], [ 'id'=>4, 'level'=>'副总', 'monery'=>3000 ] ];
var_dump(getBeforeOrAfter(1100,$arr_test));
array(3) { ["id"]=> int(3) ["level"]=> string(6) "总监" ["monery"]=> int(1000) }
|