在php中的作用
来源:互联网 发布:淘宝缴费平台 编辑:程序博客网 时间:2024/06/02 22:43
&在php中表示按“引用”传递,我自己理解成“绑定地址”。
用在变量身上,可以把一个变量与另一个变量的地址绑定在一起。
$a="a"; // 变量默认拷贝值 $b=$a; //&绑定后,改变$c,$a中任意一个变量的值,另一个也跟着变。 $c=&$a; $a="aa"; echo 'a: '.$a."\n"; echo 'b: '.$b."\n"; echo 'c: '.$c."\n"; echo '-------------------'."\n"; $b="b"; echo '$b="b", $a: '.$a."\n"; $c="c"; echo '$c="c", a: '.$a."\n";
用在函数的形式参数身上,实际参数(变量)和形式参数也可以被绑定到一起。
//实参传递进来时与形参地址绑定到一起了,改变形参d值,实参自动改变。 function foo(&$f){ $f="f"; } $bar="bar"; foo($bar); //这里不能加& echo '$bar: '.$bar."\n"; //$bar="f"
用在函数名前边,可以把变量和函数的返回值绑定到一起。
// 绑定的是qux的返回值,也就是$q的地址。 function &qux() { //静态变量在程序离开它的作用域后,它的值能保存住。 static $q=0; $q++; return $q; } $u=100; echo '$u=100, $u: '.$u."\n"; //此处没有绑定。 $u=qux(); echo '$u=qux(), $u: '.$u."\n"; $u=100; echo '$u=100, $u: '.$u."\n"; $u=qux(); echo '$u=qux(), $u: '.$u."\n"; echo '-------------------'."\n"; //此时绑定了函数的返回值$q的值。 $u=&qux(); echo '$u=&qux(), $u: '.$u."\n"; //绑定后,改变$u的值,函数内的返回值$q也变成100. $u=100; echo '$u=100, $u: '.$u."\n"; //$q ++ 后变成101 $u=qux(); echo '$u=qux(), $u: '.$u."\n";
用在对象上可以一次销毁所有对象引用。
$a=new $A();$b=$a;$c=&$a;$a=null;
php5对象默认按引用传递,所以用和不用&,改变一个对象的值,其他引用都跟着变。
但是,用了&后,如果把其中一个对象赋值null,绑定地址的对象就都销毁了,如果不用null,销毁一个,其他引用不会跟着销毁。
class A { public $aa; function __construct() { $this->aa="aa"; } } $a=new A(); $b=$a; $c=&$a; echo $a->aa."\n"; echo $b->aa."\n"; echo $c->aa."\n"; $b->aa="hello"; //全都输出hello,证明用不用&都是按引用传递的。 echo $a->aa."\n"; echo $b->aa."\n"; echo $c->aa."\n"; $a=null; //或 $c=null; 效果是一样的。 //$a肯定不存在了。 echo $a->aa."\n"; //$b还能输出hello,证明不用&,销毁$a,不影响$b. echo $b->aa."\n"; //$c也不存在了,说明使用&绑定的对象,销毁一个,另一个被销毁。 echo $c->aa."\n";
更多内容
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/09/10/2173092.html
0 0
- @在php中的作用
- @在php中的作用
- 在php中的作用
- &在C语言与PHP中的作用
- PHP php中的@作用
- PHP php中的@作用
- PHP函数array_flip()在重复数组元素删除中的作用
- PHP编码转换在Excel读取中的作用体现
- 解读PHP DOMDocument在解析XML文件中的作用
- php中的作用域
- php中的作用域
- "##"在宏中的作用
- php 中的变量 作用域
- php中的call_user_func_array的作用
- php中的short_open_tag的作用
- php中的short_open_tag的作用
- 解析PHP函数array_flip()在重复数组元素删除中的作用
- 情感在语文教育中的作用
- php-数组教程简介
- Android线程池使用
- 单页面应用越来越像游戏, 我们是否有好的架构来对待-
- 【Unity Shaders】初探Surface Shader背后的机制
- Android中Java和JavaScript交互
- 在php中的作用
- 串行总线硬盘为什么比并行总线硬盘快?
- 如何使用Ant自动构建Android版本
- 黑马程序员 java之反射
- [leetcode 148] Sort List
- DedeCMS采集导出提示"Tag Character postion"
- 线程
- 在ios程序中自动滚动TableView到某行的方法
- Android开源图表库MPAndroidChart