假设有一个数组:
$given_array=Array(
[0] => 30
[1] => 45
[2] => 60
[3] => 75
[4] => 90
[5] => 105
[6] => 120
[7] => 135)
以数字为例:195
需要插入的数字为195,差异为15
因此得到的数组是:
Array(
[0] => 30
[1] => 45
[2] => 60
[3] => 75
[4] => 90
[5] => 105
[6] => 120
[7] => 135
[8] => 150
[9] => 165
[10] => 180
[11] => 195)
需要知道最好的方法,这样做时间最少。 到目前为止,我已经尝试过:
$given_num=195;
if((given_num-$given_array[count($given_array)-1])!=15 && count($given_array)>0){
while(($given_array[count($given_array)-1]+15)<=given_num){
$given_array[]=$given_array[count($given_array)-1]+15;
}
}
结果是正确的,但不是时间可行
答案 0 :(得分:3)
我看到目标是有一个数组,后面的数字可被15整除。除非你真的必须重用旧数组(我不知道为什么),我
建议使用range()
创建一个新数组:
$given_array = range($given_array[0], 195, 15);
答案 1 :(得分:0)
Haven没有尝试过你,也不确定速度有什么不对,但试试这个。
<?php
$given_array=[30, 45, 60, 75, 90, 105, 120, 135];
$newNumber = 195;
$count = floor(($newNumber - $given_array[count($given_array)-1]) / 15);
for($i=0; $i<$count; $i++) {
array_push($given_array, $given_array[count($given_array)-1]+15);
}
print_r($given_array);
答案 2 :(得分:0)
我会说:
$given_num = 195;
$last = end($given_array);
while ($given_num > $last) {
$last = min($last + 15, $given_num);
$given_array[] = $last;
}
但范围版本相当不错=)
答案 3 :(得分:0)
使用end
函数的另一个简短解决方案:
while (($last = end($given_array)) < 195) $given_array[] = $last+15;
// now, $given_array contains all the needed items