我需要告诉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功能,但我还没有使用它,我可以用什么来获得我需要的东西?
答案 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);