# 怎么简化这段代码

• 190

\$amount = 100; //110,90,200
\$arr = [98,100,100,120,150,160,183];

``````即：
\$amount = 100;    返回 [1,2];
\$amount = 110;    返回 [2,3];
\$amount = 90;     返回 [0];
\$amount = 200;    返回 [6];``````

``````\$key   = [];    //下标值的数组
\$count = count(\$arr) - 1;

foreach(\$arr as \$k => \$v){
if(\$amount == \$v){
\$key[] = \$k;
}
}
if(empty(\$key)){
foreach(\$arr as \$k => \$v){
if(\$amount < \$arr[0]){
\$key[] = '';
break;
}
}
}
if(empty(\$key)){
foreach(\$arr as \$k => \$v){
if(\$amount > \$arr[\$count]){
\$key[] = \$count;
break;
}
}
}
if(empty(\$key)){
foreach(\$arr as \$k => \$v){
if(\$amount >= \$arr[\$k] && \$amount < \$arr[\$k + 1]){
\$key[] = \$k;
\$key[] = \$k + 1;
}
}
}
var_dump(\$key);``````

##### 8个回答

function test(\$amount){

``````        \$arr = [98,100,100,120,150,160,183];
\$max = max(\$arr);
\$min = min(\$arr);
if(\$amount > \$max){
return count(\$arr)-1;
}
if(\$amount < \$min){
return 0;
}
foreach(\$arr as \$key => \$val){
if(\$amount == \$val){
\$tmp[] = \$key;

}
}
if(!empty(\$tmp)){
return \$tmp;
}
foreach(\$arr as \$key => \$val){
if(\$amount < \$val){
continue;
}else{
\$tmp[] = \$key;
}
}
\$return[] = max(\$tmp);
\$return[] = max(\$tmp)+1;
return \$return;
}
var_dump(test(99));``````