php面试题

2.php引用变量

2017-12-22  本文已影响20人  漏诺

什么是引用变量?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.如果两个变量是引用关系,一个变,另一个也变,但如果给其中一个引用,不是普通的值,而是一个新的引用,则改变引用关系

上一篇 下一篇

猜你喜欢

热点阅读