1.引用传递
(1)字符串(数组同理)
先通过下面一个实例来学习一下。
<?php function changName(&$name){ $name = "梦云智"; } $test = 'mengyunzhi'; echo $test; changName($test); echo $test; ?> 执行结果为:。上面的代码中,changeName(&$name)执行时,首先会申请一个临时变量$name,但是并没有把$test的值赋值给$name,而是把$test的地址赋值给$name,这相当与给$test取了一个别名,接下来chengeName函数访问$name,实际上是间接访问$test,对$name的任何修改都会影响到$test,函数执行完,$name的内存被释放,$girl的内存依然存在。
(2)函数依然通过实例来解析一下:
<<?php function &getName(){ $name = 'mengyunzhi'; return $name; } $test = &getName(); var_dump($test); ?> 执行结果为:“mengyunzhi”。同上,把getName函数返回值的地址赋值给$test变量,对$name的任何修改都会影响到$test。2.值传递
代码如下:
<?php function getName($name){ $name = 'mengyunzhi'; return $name; } $test = '梦云智'; getName($test); var_dump($test); ?> 执行结果:“梦云智”。当执行getName($name)函数时,会生成一个临时变量$name,并把$test的值赋给$name,$name和$test是两个不同的变量,执行getName函数之后,$name变量被销毁,内存被释放。