php的引述返回和取消引用

php中文网
发布: 2016-06-13 11:15:23
原创
1122人浏览过

php的引用返回和取消引用

一、引用返回

引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用,使用此语法:

<?phpclass foo {    public $value = 42;    public function &getValue() {        return $this->value;    }}$obj = new foo;$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.$obj->value = 2;echo $myValue;                // prints the new value of $obj->value, i.e. 2.?>
登录后复制

以上是PHP Manual给出的解释并表示太好理解

自学 PHP、MySQL和Apache
自学 PHP、MySQL和Apache

本书将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子。 本书是第4版,经过了全面的更新、重写和扩展,包括PHP5.3最新改进的特性(例如,更好的错误和异常处理),MySQL的存储过程和存储引擎,Ajax技术与Web2.0以及Web应用需要注意的安全

自学 PHP、MySQL和Apache 400
查看详情 自学 PHP、MySQL和Apache

立即学习PHP免费学习笔记(深入)”;

立即学习PHP免费学习笔记(深入)”;

<?php    function &test(){    	static $b = 0;  //声明一个静态变量    	$b = $b+1;    	echo $b."<br>";    	return $b;    }   $a = test();  //输出 $b 的值为:1   $a = 5;   $a = test();  //输出 $b 的值为:2     $a = &test();  //输出 $b 的值为:3  **注意**   $a = 5;    //$b的值变为了5   $a = test();  //输出 $b 的值为:6  **注意**   ?>
登录后复制


立即学习PHP免费学习笔记(深入)”;

立即学习PHP免费学习笔记(深入)”;

$a = test() 虽然说函数定义的时候,是引用返回方式,但是如果采用这种普通形势调用函数,那它的作用也就和普通的函数一样,所以看结果就是1、2

$a = &test() 这种调用方式就是引用返回,就类似于 $a = &$b ,然后第二句又把$a = 5,那就是等于将变量$b = 5,最后一句得到的6也就很容易理解了!

和参数传递不同,这里必须在两个地方都用 & 符号——指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $a 是作为引用的绑定,而不是通常的赋值。

Note如果试图这样从函数返回引用:return ($this->value);,这将不会起作用,因为在试图返回一个表达式的结果而不是一个引用的变量。只能从函数返回引用变量——没别的方法。如果代码试图返回一个动态表达式或 new 运算符的结果,自 PHP 4.4.0 和 PHP 5.1.0 起会发出一条 E_NOTICE 错误。

二、取消引用

当 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:

<?php$a = 1;$b =& $a;unset($a);?>
登录后复制

立即学习PHP免费学习笔记(深入)”;

不会 unset $b,只是 $a

再拿这个和 Unix 的 unlink 调用来类比一下可能有助于理解。


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号