PHP使用函数制作N个数组副本

par*_*and 2 php arrays multidimensional-array

在我的代码中,我需要制作一个虚拟数组的副本.例如,阵列很简单$dummy = array('val'=> 0).我想制作这个数组的N个副本并将它们添加到具有类似结构的现有数组的末尾.显然这可以通过for循环来完成但是为了便于阅读,我想知道是否有任何内置函数可以使这更加冗长.

这是我使用for循环提出的代码:

//example data, not real code
$existingArray = array([0] => array('val'=>2),[1] => array('val'=>3) );

$n = 2;
for($i=0;$i<$n;$i++) {
   $dummy = array('val'=>0); //make a new array
   $existingArray[] = $dummy; //add it to the end of $existingArray
}
Run Code Online (Sandbox Code Playgroud)

重申一下,如果存在这样的函数,我想用函数重写它.有些事情(显然这些不是真正的功能):

//make $n copies of the array
$newvals = clone(array('val'=>0), $n);

//tack the new arrays on the end of the existing array
append($newvals, $existingArray)
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 5

我想你正在寻找array_fill:

array array_fill ( int $start_index , int $num , mixed $value )
Run Code Online (Sandbox Code Playgroud)

使用参数num值的条目填充数组,从value参数开始键start_index.

所以:

$newElements = array_fill(0, $n, Array('val' => 0));
Run Code Online (Sandbox Code Playgroud)

你还是要处理的追加$newElements$existingArray与自己,大概array_merge:

array array_merge ( array $array1 [, array $... ] )
Run Code Online (Sandbox Code Playgroud)

将一个或多个数组的元素合并在一起,以便将一个值的值附加到前一个数组的末尾.它返回结果数组.

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个键.但是,如果数组包含数字键,则后面的值不会覆盖原始值,但会附加.

带有数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号.

所以:

$existingArray = array_merge($existingArray, $newElements);
Run Code Online (Sandbox Code Playgroud)

这一切都有效,因为您的顶级数组是数字索引的.