详解 php引用传递参数

https://jingyan.baidu.com/article/f71d6037b18e3d1ab641d133.html

在做PHP开发时,我们经常在调用函数时,都是用值传递的,今天看到一个代码函数的参数有个变量前面有个‘&’符号,经过一番查找,学习,验证,研究,才知道这就是引用传递。

下面我们一起来了解,熟悉下这个引用传递。

方法/步骤

  1. 1

    先看下我们的示例代码,如图,我们先定义一个方法,名字叫jingyan,参数都是用值传递。方法逻辑也很简单,对二个传进来的参数进行相加,然后把结果返回。

    详解 php引用传递参数

  2. 2

    再定义一个方法,在这个方法里调用函数jingyan,然后把函数返回的结果,和其中一个参数输出显示。

    详解 php引用传递参数

  3. 3

    运行页面,我们得到输出,结果正常。

    详解 php引用传递参数

  4. 4

    这次,我们把jingyan方法的第二个参数由值传递,改成引用传递,在其参数名前面添加‘&’符号。代码如图

    详解 php引用传递参数

  5. 5

    调用的方法没有改动,再次运行代码,看到结果如图。

    从图中看到方法运行的结果没有变,还是31,但变量B却变了,定义这个变量时赋值是20,现在输出显示是21了。

    为什么这样?这就是因为我们把方法改成引用传递的结果。

    变量b是引用传递给方法的,在方法里,我们对参数b进行了加1操作,使得b的值变为21了,但这个参数b其实和方法外传递过来的变量b是指向同一个地方的,修改了参数b,变量b也会跟着改变。

    详解 php引用传递参数

  6. 6

    换个角度解析,更清晰点,如图,当为引用传递时,变量b和参数b同时指向的内存块假设为p,当在函数里,参数b把原来的值加1变为21,则p由20变为21了,所以当输出变量b的值时,其实就是输出p的值,也是21。

    详解 php引用传递参数

  7. 7

    为什么要使用引用传递?

    这里就简单举例一个需要使用引用传递的场景。调用一个函数,只能有一个返回值,(除非你返回的是一个数组,数组里就可以包含多个值,但严格来说,这也是只能返回一个值,一个数组)。

    但你调用函数,需要返回二个值时,使用引用传递就间接达到这个目的。因为我们调用一个函数后,变量b和c二个值都改变了。

    详解 php引用传递参数

    END

猜你喜欢

转载自blog.csdn.net/Json159/article/details/82186324