在 PHP 函数中,存储变量变量的变量类型称为引用或地址,允许通过变量修改另一变量的值。PHP 支持两种引用:变量引用 (&) 指向简单变量,数组引用 (&[]) 指向数组元素。通过使用 & 符号和 &[] 符号创建引用,变量引用和数组引用在传递回调函数、修改对象实例变量等场景中非常有用。
PHP 函数中存储变量变量的变量类型
在 PHP 函数中,可以存储变量变量的变量类型称为引用(reference)或地址(address)。这允许我们通过一个变量修改另一个变量的值。
PHP 中支持两种类型的引用:
&
): 对于简单值,创建一个指向另一个变量的引用。&[]
): 对于数组,创建一个指向数组元素的引用。使用变量引用
要创建变量引用,在变量名前使用 &
符号:
<?php $x = 10; $y = &$x; $y = 20; // 同时修改了 $x 和 $y echo $x; // 输出:20 ?>
使用数组引用
要创建数组引用,在数组索引前使用 &[]
符号:
<?php $arr = [10, 20, 30]; $ref = &$arr[1]; $ref = 40; // 同时修改了 $arr[1] 和 $ref echo $arr[1]; // 输出:40 ?>
实战案例
变量引用和数组引用可以在各种场景中使用。例如:
将回调函数作为参数传递给其他函数:
<?php function sum($a, $b) { return $a + $b; } $arr = [10, 20]; // 使用数组引用将 $arr[1] 作为第二个参数传递 array_walk($arr, 'sum', &$arr[1]); echo $arr[1]; // 输出:30 ?>
在面向对象的编程中,修改对象的实例变量:
<?php class User { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function rename(&$name) { $this->name = $name; } } $user = new User('alice'); $user->rename('bob'); echo $user->getName(); // 输出:bob ?>