我有一個原始數組正在被修改,如:保持數組需要修改的拷貝/克隆數
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之前 –