我有一个原始数组正在被修改,如:保持数组需要修改的拷贝/克隆数
private function test()
{
$myArray = array(1,2,3);
$array = $this->modifyArray($myArray, 1);
}
private function modifyArray($paramArray, $someValue)
{
foreach ($paramArray as &$item) {
$item += $someValue;
}
return $paramArray;
}
我的理解$ myArray的和$阵列将在功能 '测试' 末端[2,3,4]。
但是,什么是正确的做法,如果我想重新做到这一点,再次调用modifyArray这样的:
private function test()
{
$myArray = array(1,2,3);
$array = $this->modifyArray($myArray, 1);
// new call
$anotherArray = $this->modifyArray($myArray, 2);
}
据我了解$ myarray的,$阵列和$ anotherArray将现是[4,5,6]而不是$ array = [2,3,4]和$ anotherArray = [3,4,5],这是我的意图。
还是我完全误导了这里?
'$ myArray'在你的例子中永远不会改变。 '$ array'作为修改后的副本从函数返回。 – AbraCadaver
可能你想'private function modifyArray(&$ paramArray,$ someValue)' - 注意&paramArray之前 –