PHP 中的"按引用传递"和"按值传递"是什么?

object oriented programmingphpprogramming更新于 2025/10/7 18:07:17

在本文中,我们将学习 PHP 中的"按值传递"和"按引用传递"。

现在,让我们详细了解这两个概念。

在 PHP 中,我们通常采用"按值传递"的方式将参数传递给函数。我们之所以采用这种做法,是因为如果函数内部的参数值发生变化,函数外部的参数值并不会改变。

在某些情况下,我们可能需要修改函数参数。因此,为了允许函数修改其参数,必须通过引用传递参数。

我们先从"按引用传递"开始。正如前面提到的,我们可以通过引用将变量传递给函数,以便函数可以修改该变量。要开始传递引用传递的参数,请在函数定义中的参数名称前添加一个与号 (&)。

示例

让我们用一个简单的示例来测试一下。

<?php
   function calculate(&$a){
      $a++;
   }
   $a=5;
   calculate($a);
   echo $a;
?>

输出

6

解释

这里我们声明了变量 $a,并将其作为引用传递给函数 calculate()。因此,根据原理,如果 $a 的值在函数内部发生变化,那么在函数外部也会发生变化。

注意

函数调用时没有引用符号,只有函数定义时才需要。仅凭函数定义就足以正确地通过引用传递参数。在 PHP 5.4 版本中,这已被弃用。当您使用 calculate(&$a); 时,它会抛出错误。

示例

让我们测试一个例子来理解值传递。

<?php
   function calculate($a){
      $a++;
   echo $a."<br/>";
   }
   $a=5;
   calculate($a);
   echo $a;
?>

输出

6
5

解释

这里,我们将值以值传递的方式传递给函数calculate()。它的值在函数内部发生变化,但这不会反映在函数外部。变量的值在函数外部保持不变。


相关文章