PHP中值传递和引用传递的区别
变量传值是指:将一个变量的值“传递”给另一个变量。
有且只有两种传数据的方式:值传递和引用传递。php默认的一般情况下,都使用的是值传递。
下面让我们一起来看看这两种传递方式到底有哪些不同:
值传递:
就是将右边变量的“数据值”本身,复制一份,然后赋值给左边变量
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
举例:
$v1 = 1; $v2 = $v1;
值传递后,两个变量是互不影响的,相互独立
<?php //值传递 $v1 = 10; $v2 = $v1; echo "v2的值为:".$v2;//10 $v1 = 11; echo "<br>v2的值为:".$v2;//10
引用传递:
是将右边变量对数据的引用关系,传给左边的变量
引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的。
<?php //引用传递 $v1 = 10; $v2 = &$v1; echo "v2的值为:".$v2;//10 $v1 = 11; echo "<br>v2的值为:".$v2;//11
总结:
这里主要考察的就是类似于传值,传引用的问题。了解到传值是重新开辟内存空间,相当于把原值复制一份,和原值是彼此独立的。传引用(指针)只是给原内存块加了个指向,引用的值变了,就修改了指向的内存地址值,所有指向的引用全部变了。
Atas ialah kandungan terperinci PHP两种传值方式,值传递与引用传递. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!