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


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

是的,我知道这也可以作为函数/类应用,但我问我是否可以在盒子里做那个神奇

的盒子:)

谢谢!

您可以使用

它支持skip参数range()创建包含一系列元素的数组

$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
)