这篇文章主要介绍了php中返回引用类型的方法,
<?php $color = 'yellowgreen'; function &getref() { global $color; return $color; } function getcopy() { global $color; return $color; } $colorref = &getref(); $colorref = 'blue'; //$colorcopy = getcopy(); //$colorcopy = 'black'; var_dump($color); var_dump($colorref); //var_dump($colorcopy);
运行一遍上面的代码,差不多就明白了,使用 &getref() 将把 $colorref 绑定到 $color 上面,也就是说 $colorref 和 $color 两个变量是指向同一个值了。当改变其中一个值时,另一个也会跟着变化。
如果 $color 是一个数组,也是一样的,上面的代码在 php4/5 的任意版本中,表现行为都是一样的。
当 $color 是一个 object 的时候,问题就出现了。
php4 中 getcopy 仍然会返回一个复制的 object;&getref() 返回引用。
php5 中就有点另类了,
最新的 php5.2,行为和 php4 一样,getcopy() 返回复制,&getref() 返回引用。
但是某些的 php5 的版本这里稍微有些不同,比如 php5.1.6,表现为 getcopy() 和 &getref() 都是引用。
这里 getcopy() 和 &getref() 是两个全局函数,如果放到类里面成为类的 member functions,那又会是另外一番景象……
ps:返回 references 并不会提高性能,有时候反而降低性能,所以不要想当然的使用这个特性来“优化”程序。
以上就是php 中返回引用类型的方法代码示例的详细内容。
