我有一个函数返回对数组的引用(为了简单起见使用全局变量,实际上这些数组是一些大树结构的元素):
$array1;
$array2;
function &foo($arg){
//deduce from $arg reference to which array should be returned
if(...) {
global $array1;
return $array1;
} else {
global $array2;
return $array2;
}
}
然后我需要将另一个数组附加到使用此函数返回的数组(以便更改初始数组):
$arrayToAppend = array('a','b');
$arrayToChange = &foo($arg);
$arrayToChange = array_merge($arrayToChange, $arrayToAppend);
我想要做的语法是否正确?它改变引用的数组吗?我应该知道有什么陷阱吗? (关于参考资料的缺陷,不是关于合并分析数组等)。
答案 0 :(得分:0)
你正在混淆。你应该只使用&在函数中的参数前面(如果参数是一个简单的类型,所以没有对象),并且您希望该参数的内容发生更改。
示例:
<?php
$arrayToChange = array('a', 'b');
$arrayToAppend = array('c', 'd');
mergeArrays($arrayToChange, $arrayToAppend);
// $arrayToChange will now contain 'a', 'b', 'c', 'd'
function mergeArrays(& $array, $arrayToAppend)
{
$array = array_merge($array, $arrayToAppend);
}
//Note: This is not the way you should do it.
//A function best returns a result.
//This just illustrates how you can change the content of a parameter