假设数组为:
$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;
}
}
结果正确但时间不可行
我知道目标是要有一个数组,后面的数字能被15整除。除非您真的必须重用旧数组(我不知道为什么),否则我不会使用它我建议用range()
:
$given_array = range($given_array[0], 195, 15);
还没有试过你的,不知道在速度方面有什么问题,但试试这个
<?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);
示例:https://3v4l.org/vPiAW
我会说:
$given_num = 195;
$last = end($given_array);
while ($given_num > $last) {
$last = min($last + 15, $given_num);
$given_array[] = $last;
}
但是范围版本非常好=)
另一个使用end
函数的简短解决方案:
while (($last = end($given_array)) < 195) $given_array[] = $last+15;
// now, $given_array contains all the needed items