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));
对于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
假设我有一个变量 $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));
对于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