1

我有一堆数组,它们存储在不同的变量中,如 $required、$reserved 等......

我想允许(在函数内部)传递一个选项数组(如$options = array('required', 'reserved')),然后该数组将用于定义要合并在一起的数组并在函数末尾返回。

所以,我在函数的一部分中有这段代码,它应该获取所有选项并合并数组,使用变量变量从选项数组中传递的字符串中获取数组):

$array = array();

foreach ($options as $key) {
  $array_to_merge = ${$key};
  array_merge($array, $array_to_merge);
}

return $array;

但是,当我返回 $array 时,它显示 0 个项目。如果 I print_r($array_to_merge);,我实际上应该得到整个数组。

array_merge() 是否根本不适用于变量变量,或者我在这里遗漏了什么......?

4

2 回答 2

4

array_merge 返回合并的数组,您没有将该返回值分配给任何东西,因此它正在丢失。

$array = array_merge($array, $array_to_merge);

应该解决你的问题。

于 2011-06-09T17:20:17.537 回答
1

如果我没看错,您还可以将代码(替换循环)简化为:

 $array = call_user_func_array("array_merge", compact($options));

compact替换变量变量查找并获取数组列表。实际上只array_merge需要一个调用。

于 2011-06-09T17:22:56.567 回答