PHP将数组附加到数组引用

时间:2017-08-16 11:12:41

标签: php reference

我有一个函数返回对数组的引用(为了简单起见使用全局变量,实际上这些数组是一些大树结构的元素):

$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);

我想要做的语法是否正确?它改变引用的数组吗?我应该知道有什么陷阱吗? (关于参考资料的缺陷,不是关于合并分析数组等)。

1 个答案:

答案 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