设置array_merge_recursive

时间:2016-09-10 10:04:46

标签: php

我需要告诉array_merge_recursive需要合并的变量

我有变量名称需要用作字符串,例如我有以下

$array1 = array('color'=>'blue', 'taste'=> 'sour', 'size'=>'big');
$array2 = array('color'=>'green', 'taste'=> 'sweet', 'size'=>'medium');
$array3 = array('color'=>'black', 'taste'=> 'sour', 'size'=>'small');
$array4 = array('color'=>'grey', 'taste'=> 'sweet', 'size'=>'big');

$allarrays = array_merge_recursive($array1, $array2, $array3, $array4);

这样可以正常工作并合并我的数组,但我需要添加一个foreach来获取我需要的数组列表,并设置要合并的数组。

$arraysThatINeedToAddToTheMerge = array('array2', 'array4');

foreach ($arraysThatINeedToAddToTheMerge as $data){

    $toBeMerged[] = $data;

}

$allarrays = array_merge_recursive($toBeMerged);

这不起作用,因为看起来我不能使用数组作为array_merge_recursive的参数。 我想也许我可以使用list功能,但我还没有使用它,我可以用什么来获得我需要的东西?

1 个答案:

答案 0 :(得分:1)

以你想要的方式处理这个问题的两个要素:

用于构建要合并的数组的变量

$arraysThatINeedToAddToTheMerge = array('array2', 'array4');

$toBeMerged = [];
foreach ($arraysThatINeedToAddToTheMerge as $data){
    $toBeMerged[] = $$data;
}

这将构建一个数组数组,而不仅仅是变量名称的数组;

然后(一个现代的PHP解决方案)然后在调用array_merge_recursive时解包要合并的数组参数

$allarrays = array_merge_recursive(...$toBeMerged);

或使用call_user_func_array()用于旧版本的PHP

$allarrays = call_user_func_array('array_merge_recursive', $toBeMerged);