插件窝 干货文章 php数组是什么传递

php数组是什么传递

array 数组 传递 引用 736    来源:    2025-03-18

在PHP中,数组的传递方式取决于你如何使用它。PHP中的数组可以通过值传递引用传递两种方式传递。

1. 值传递(默认行为)

默认情况下,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 )

2. 引用传递

如果你希望传递数组的引用(即不创建副本,而是直接操作原始数组),可以使用&符号来显式地传递引用。

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

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 )

总结

  • 值传递:默认行为,传递的是数组的副本,修改副本不会影响原始数组。
  • 引用传递:使用&符号,传递的是数组的引用,修改引用会影响原始数组。

根据你的需求选择合适的传递方式。