array_merge 基于整数值

array_merge based on integer value

假设我有一个变量 $num,它可以包含任何整数,我有一个数组 $my_array,它包含一些值,例如:

$my_array = ['a','b','c'];

我想根据 $num 的值合并另一个动态数组 $dyn_array 和 $my_array。

假设 $num = 2,我想要:

$merged_array = array_merge($my_array, $dyn_array, $dyn_array);

如果 $num = 3,我想要:

$merged_array = array_merge($my_array, $dyn_array, $dyn_array, $dyn_array);

所以基本上根据 $num.

的值在 array_merge 中添加 $dyn_array

我将如何做这样的事情?

感谢您的帮助

您可以使用 ... () 扩展调用 array_fill 的结果,这将根据需要合并任意数量的 $dyn_array 副本:

$num = 2;
$result = array_merge($my_array, ...array_fill(0, $num, $dyn_array));

https://3v4l.org/amCJu


对于PHP 5.6之前的版本,不支持...,您可以使用以下行代替:

$result = array_reduce(
  array_fill(0, $num, $dyn_array),
  function($carry, $item) { return array_merge($carry, $item); },
  $my_array
);

遍历 array_fill 调用中的相同副本,一次将它们合并到结果中。参见 https://3v4l.org/s7dvd

考虑到您使用的是 PHP 5.5.

,我有一个更长的解决方法
$my_array = ['a','b','c'];

$array_main[] = &$my_array;
$array_main[] = [1, 2];
$array_main[] = [4, 5];
$array_main[] = ['etc', 'bla'];

$iterations = count($array_main);

for ($i = 1; $i < $iterations; $i++) {
    $array_main[0] = array_merge(
        $array_main[0], 
        $array_main[$i]
    );
}

echo '<pre>';
print_r($my_array);

我决定将数组添加为第一个键并通过引用,因此我们将始终更新它。

然后我循环遍历项目数量 - 1,在原始数组中一个一个地添加。

这里测试代码:https://3v4l.org/LF0CR