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

时间:2016-07-02 11:29:52

标签: php arrays

假设有一个数组:

$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;
                    }

                }

结果是正确的,但不是时间可行

4 个答案:

答案 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);

示例:https://3v4l.org/vPiAW

答案 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