php传值与传引用
发布时间: 2024-12-21 04:10:46
① php引用传递中的&什么意思,有什么用
其实图片中的文字已经描述得很详细了,如果你是循序渐进学到这里的,应该是可以理解的啊。
加了&就是引用传递,就是把实参的内存地址传递给函数内部的形参,这样的话函数内部对形参的任何修改都会直接影响到外部的实参,也就是说这种情况下实参和形参其实是同一个变量;
而不加&则是值传递,就是把实参的值传递给函数内部的形参,这时候函数内部对形参的任何修改都与外部的实参没有任何关系,不会改变实参的值。
打个比方,值传递就好比你给某人100块钱,然后他拿这钱去不管怎么花都与你无关了;而引用传递则好比你把自己的银行帐号密码都告诉某人,那么他此后用这账号所做的任何消费行为都与你的总资产息息相关了!
② php函数中数组作为参数时是值传递还是引用传递
默认情况下,数组是值传递,只有对象是引用传递。
③ PHP中按值传递和引用传递的区别
(1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略
(2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
(3)优缺点:
A:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
B.按引用传递则不需要复制值,对于性能提高很有好处。
<?php
header('content-type:text/html;charset=utf-8');
//探讨一下array,null,对象,资源的默认传递方式
//结论(1)array默认是值传递,通过加&可以引用传递
//(2)null默认是值传递,通过加&可以引用传递
//(3)资源是值传递.通过加&可以引用传递
//(4)对象默认也是值传递,但是对象值传递是对象标识符
$hero=array('no1'=>'蝙蝠侠','no2'=>'超人');
$hero2=&$hero;
$hero2['no1']='蜘蛛侠';
echo'<pre>';
var_mp($hero);
var_mp($hero2);
$a=null;
$b=&$a;
$b='abc';
var_mp($a,$b);
?>
热点内容