$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);
幕布斯6054654
慕神8447489