首页 > 文章列表 > 揭秘 PHP 函数调用中的值传递和引用传递

揭秘 PHP 函数调用中的值传递和引用传递

引用传递 值传递
343 2024-04-23

PHP 中函数调用既可使用值传递也可使用引用传递。默认情况下为值传递,函数接收参数的副本,对其修改不影响原始值。而引用传递通过在参数前加 & 符号来声明,函数直接修改传递的变量。引用传递在需要函数修改外部变量时很有用,例如修改数组元素。

揭秘 PHP 函数调用中的值传递和引用传递

揭秘 PHP 函数调用中的值传递和引用传递

值传递

在 PHP 中,默认情况下,函数调用使用值传递。这意味着当一个值作为参数传递给函数时,函数将获得该值的副本。对该副本所做的任何更改都不会影响原始值。

function addValue($number) {
  $number += 10;
}

$value = 10;
addValue($value);
echo $value; // 输出:10

如上例所示,当 $value 传递给 addValue 函数时,函数获取该变量的副本。函数内的修改只影响该副本,不会影响原始变量。

引用传递

有时,我们需要函数直接修改原始变量。这时,可以使用引用传递。要声明引用,请在参数类型声明前添加一个 & 符号。

function addReference(&$number) {
  $number += 10;
}

$value = 10;
addReference($value);
echo $value; // 输出:20

如上例所示,addReference 函数的 $number 参数声明为引用。这意味着函数将直接修改传递的变量。

实战案例

使用引用传递可以简化某些任务。例如,我们有一个包含用户数据的数组,并且需要在函数中对其进行修改。

$users = [
  [
    'id' => 1,
    'name' => 'John Doe',
  ],
];

function changeName(&$user, $newName) {
  $user['name'] = $newName;
}

changeName($users[0], 'Jane Doe');
echo $users[0]['name']; // 输出:Jane Doe

通过将 $user 参数声明为引用,changeName 函数可以直接修改数组中的原始元素。

结论

在 PHP 中了解值传递和引用传递对于编写高效和可维护的代码至关重要。通过使用引用传递,我们可以避免不必要的变量复制,并直接修改函数外部的变量。