在 php 函数中,存储变量变量的变量类型称为引用或地址,允许通过变量修改另一变量的值。php 支持两种引用:变量引用 (&) 指向简单变量,数组引用 (&[]) 指向数组元素。通过使用 & 符号和 &[] 符号创建引用,变量引用和数组引用在传递回调函数、修改对象实例变量等场景中非常有用。
PHP 函数中存储变量变量的变量类型
在 PHP 函数中,可以存储变量变量的变量类型称为引用(reference)或地址(address)。这允许我们通过一个变量修改另一个变量的值。
PHP 中支持两种类型的引用:
立即学习“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 ?>