什么是引用变量?php中,用什么符号定义引用变量?
在php中,引用意味着用不同的名字访问同一个变量的内容。
定义方式,用&符号
引用变量的工作原理(难点)
//定义一个变量
$a=range(0,1000);//$a开辟空间,并指向内存空间。range创建0-1000的数组。
//定义一个变量b,将a变量的值赋给$b.
$b=$a;//此时$b不会开辟空间,因为php有cow机制。$a与$b共享一个空间
前2步内存使用cow机制,copy on write,$a与$b只要有修改操作,才会复制开辟空间,现在$a与$b没有改变,不能copy,只是多了$b指向$a的空间,不是新开辟空间。什么时候开辟新空间呢?如下:对$a进行写操作,会开辟新空间。
$a=range(0,1000);//重新开辟空间,值没有变,只是进行写操作,所以开辟新空间。
使用merory_get_usage()看内存使用空间
?>
$a=range(0,1000);//$a开辟空间
$b=&$a;//$b不会开辟空间
$a=range(0,1000);//不会重新开辟空间,因为这里有引用,引用就是,a,b指向同一空间,没有cow机制。
?>
unset只会取消引用,不会销毁空间
对象本身就是引用传递
引用变量需要注意的4点问题
1.只有变量才有地址,也就是只有变量才能引用
2.一个变量发生变化,另一个变量的值也发生变化
3.在使用unset()函数时,如果有引用关系,只是解除了这种引用关系,只删除一个名字,另一个还在
4.如果两个变量是引用关系,一个变,另一个也变,但如果给其中一个引用,不是普通的值,而是一个新的引用,则改变引用关系
网友评论