怎么简化这段代码

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

如上:变量$amount跟$arr进行对比,如果变量在数组中,则返回数组中的下标值;
如果变量不在数组中,先检测变量是否在哪两个值(AB)之间,如果在,则返回这AB的下标;
如果不在两个值之间,若变量小于数组的第一个值,则返回下标0;
若变量大于数组的最后的值,则返回数组长度减一。

即:
$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);


慕后森
浏览 803回答 2
2回答

幕布斯6054654

我这个版本应该是最简化的<?php$result&nbsp;=&nbsp;[];foreach($arr&nbsp;as&nbsp;$index&nbsp;=>&nbsp;$value)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($amount&nbsp;<&nbsp;$value)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result[0]&nbsp;=&nbsp;$index; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;($amount&nbsp;===&nbsp;$value)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result[0]&nbsp;=&nbsp;$index;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result[]&nbsp;=&nbsp;$index;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;} } var_dump($result);?>

慕神8447489

精简后的<?php$amount&nbsp;=&nbsp;110;&nbsp;//110,90,200$arr&nbsp;=&nbsp;[98,100,100,120,150,160,183]; $key&nbsp;&nbsp;&nbsp;=&nbsp;[]; $arr_length&nbsp;=&nbsp;count($arr);for&nbsp;($i=0;&nbsp;$i<$arr_length;&nbsp;$i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if($amount&nbsp;==&nbsp;$arr[$i]&nbsp;||&nbsp;(empty($key)&nbsp;&&&nbsp;$amount&nbsp;>&nbsp;$arr[$i]&nbsp;&&&nbsp;$i&nbsp;==&nbsp;$arr_length&nbsp;-&nbsp;1)){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key[]=$i; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;if(empty($key)&nbsp;&&&nbsp;$amount&nbsp;<&nbsp;$arr[$i])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i-1>=0&nbsp;?&nbsp;array_push($key,&nbsp;$i-1,&nbsp;$i)&nbsp;:&nbsp;$key[]=$i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;} }&nbsp; var_dump($key);?>
打开App,查看更多内容
随时随地看视频慕课网APP