在PHP中,数组的传递方式取决于你如何使用它。PHP中的数组可以通过值传递和引用传递两种方式传递。
默认情况下,PHP中的数组是通过值传递的。这意味着当你将一个数组赋值给另一个变量或传递给一个函数时,PHP会创建一个数组的副本,而不是直接传递原始数组。
$array1 = [1, 2, 3];
$array2 = $array1; // 值传递,$array2 是 $array1 的副本
$array2[0] = 100; // 修改 $array2 不会影响 $array1
print_r($array1); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 )
print_r($array2); // 输出: Array ( [0] => 100 [1] => 2 [2] => 3 )
如果你希望传递数组的引用(即不创建副本,而是直接操作原始数组),可以使用&
符号来显式地传递引用。
$array1 = [1, 2, 3];
$array2 = &$array1; // 引用传递,$array2 是 $array1 的引用
$array2[0] = 100; // 修改 $array2 会影响 $array1
print_r($array1); // 输出: Array ( [0] => 100 [1] => 2 [2] => 3 )
print_r($array2); // 输出: Array ( [0] => 100 [1] => 2 [2] => 3 )
在函数中,数组默认也是通过值传递的。如果你希望在函数中修改原始数组,可以使用引用传递。
function modifyArray($arr) {
$arr[0] = 100; // 修改的是副本,不影响原始数组
}
function modifyArrayByReference(&$arr) {
$arr[0] = 100; // 修改的是原始数组
}
$array = [1, 2, 3];
modifyArray($array);
print_r($array); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 )
modifyArrayByReference($array);
print_r($array); // 输出: Array ( [0] => 100 [1] => 2 [2] => 3 )
&
符号,传递的是数组的引用,修改引用会影响原始数组。根据你的需求选择合适的传递方式。