在不使用循环的情况下向数组添加值

Adding value to array without using loops

我想知道是否可以在不使用循环的情况下向数组添加值。

是的,我知道在技术上我可以写:

$myArray = array(0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32); //etc...

但是正如您在示例中看到的那样,如果行很长,则使用循环来做会更聪明。

既然我已经知道每个数字都会增加 +2,我想知道盒子右侧是否有内部 php 命令,所以我可以通过回调或任何其他魔术来完成它; )

语法不正确,只是为了让您理解。

$myArray = Array();
$myArray[] = insertArray($valueOf{$x};$x;$x>=100;$x=+2);

是的,我知道这也可以作为 function/class 应用,但我想问的是我是否可以做到这一点魔术 :)

谢谢!

您可以使用 range() 创建包含一系列元素的数组,它支持 skip 参数

$a = range(0,10,2);
print_r($a);

Array
(
    [0] => 0
    [1] => 2
    [2] => 4
    [3] => 6
    [4] => 8
    [5] => 10
)

是的,你有一个叫做 array_walk 的东西。像这样定义一个函数:

function addTwo (&$item, $key)
{
    $item = $item * 2;
}

然后这样使用函数:

array_walk ($myArray, 'addTwo');

在您的用例中,您可以使用 range()skip 选项,或者,您可以这样使用:

array_walk (range (0, $max));

或者,range()

range (0, $max, 2);

您可以使用 range() (PHP Manual) 执行此操作。要生成您的数组,请执行以下操作:

$array = range(0, 32, 2);

最后一个变量是数组中每个条目之间的步数。它默认为 1,但通过将其设置为 2,每个数字将递增 2。

print_r($array);

生产

Array
(
    [0] => 0
    [1] => 2
    [2] => 4
    [3] => 6
    [4] => 8
    [5] => 10
    [6] => 12
    [7] => 14
    [8] => 16
    [9] => 18
    [10] => 20
    [11] => 22
    [12] => 24
    [13] => 26
    [14] => 28
    [15] => 30
    [16] => 32
)