$amount = 100; //110,90,200$arr = [98,100,100,120,150,160,183];如上:變量$amount跟$arr進(jìn)行對比,如果變量在數(shù)組中,則返回數(shù)組中的下標(biāo)值;如果變量不在數(shù)組中,先檢測變量是否在哪兩個值(AB)之間,如果在,則返回這AB的下標(biāo);如果不在兩個值之間,若變量小于數(shù)組的第一個值,則返回下標(biāo)0;若變量大于數(shù)組的最后的值,則返回數(shù)組長度減一。即:
$amount = 100; 返回 [1,2];
$amount = 110; 返回 [2,3];
$amount = 90; 返回 [0];
$amount = 200; 返回 [6];下面是我寫的代碼,求精簡。$key = []; //下標(biāo)值的數(shù)組$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);
2 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗 獲得超7個贊
我這個版本應(yīng)該是最簡化的
<?php$result = [];foreach($arr as $index => $value) { if ($amount < $value) { $result[0] = $index; } else if ($amount === $value) { $result[0] = $index; break; } else { $result[] = $index; break; } } var_dump($result);?>

慕神8447489
TA貢獻(xiàn)1780條經(jīng)驗 獲得超1個贊
精簡后的
<?php$amount = 110; //110,90,200$arr = [98,100,100,120,150,160,183]; $key = []; $arr_length = count($arr);for ($i=0; $i<$arr_length; $i++) { if($amount == $arr[$i] || (empty($key) && $amount > $arr[$i] && $i == $arr_length - 1)){ $key[]=$i; } if(empty($key) && $amount < $arr[$i]) { $i-1>=0 ? array_push($key, $i-1, $i) : $key[]=$i; break; } } var_dump($key);?>
添加回答
舉報
0/150
提交
取消