如何在数组中插入这些元素


How to insert these element in array

假设数组为:

$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