php
值传递和引⽤传递的区别是什么?
值传递:在函数范围内,改变变量值得⼤⼩,都不会影响到函数外边的变量值。
引⽤传递:在函数范围内,对值的任何改变,在函数外部也有所体现,因为传引⽤传的是内存地址。
敲两段代码然后就可以看出两者的区别,咱们透过现象看本质
字符串是什么样12345678function sum($a){
$a++;
$b = $a;
return $b;
}
$a = 10;
echo sum($a).'<br />';//11
echo $a;//10
12345678function sum(&$a){
$a++;
$b = $a;
return $b;
}
$a = 10;
echo sum($a).'<br />';//11
echo $a;//11
两段代码的差别在于函数sum 的参数上,⼀个是传值$a ,另⼀个是传引⽤&$a ,其结果是传值过后$a 的值最终没有发⽣改变,反之传引⽤过后$a 的值发⽣了变化。这⾥学过C 语⾔的童鞋就明⽩是怎么回事了,压栈的是引⽤的副本。
由于引⽤是指向某个变量的,对引⽤的操作其实就是对他指向的变量的操作。(作⽤和传指针⼀样,只是不⽤解引⽤) &是指向某个变量地址的符号,函数sum 中的形参&$a 实际上就是实参$a ,那么将其传进sum 中进⾏了⼀次++运算之后,实参$a 的值实际上也就发⽣了改变,就是这么回事。
说明:
按值传递中原来参数的值在调⽤其他函数之后还是原来的值,⽽引⽤传递则是改变了原来的值。按照按值传递的做法来传值时,如果需要原来的值发⽣改变,则需要在进⾏代码复制,若是值够⼤或者是⼀⼤串字符串时,会使代码⽐较多,重复,⽽引⽤传递则不需要复制PHP 代码,对提⾼性能这⼀个⽅⾯有很⼤的优势。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论