PHP基础之引用的解释2——引用传递和返回
发布:smiling 来源: PHP粉丝网 添加日期:2021-01-02 18:09:00 浏览: 评论:0
引用传递
可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。语法如下:
- <?php
- function foo(&$var)
- {
- $var++;
- }
- $a=5;
- foo($a); // $a is 6 here
- ?>
注意在函数调用时没有引用符号——只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。在最近版本的 PHP 中如果把 & 用在 foo(&$a); 中会得到一条警告说“Call-time pass-by-reference”已经过时了。
以下内容可以通过引用传递:
变量,例如 foo($a)
New 语句,例如 foo(new foobar())
从函数中返回的引用,例如:
- <?php
- function &bar()
- {
- $a = 5;
- return $a;
- }
- foo(bar());
- ?>
任何其它表达式都不能通过引用传递,结果未定义。例如下面引用传递的例子是无效的:
- <?php
- function bar() // Note the missing &
- {
- $a = 5;
- return $a;
- }
- foo(bar()); // 自 PHP 5.0.5 起导致致命错误
- foo($a = 5) // 表达式,不是变量
- foo(5) // 导致致命错误
- ?>
这些条件是 PHP 4.0.4 以及以后版本有的。
引用返回
引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用,使用此语法:
- <?php
- class 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.
- ?>
本例中 getValue 函数所返回的对象的属性将被赋值,而不是拷贝,就和没有用引用语法一样。
Note: 和参数传递不同,这里必须在两个地方都用 & 符号——指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $myValue 是作为引用的绑定,而不是通常的赋值。
Note: 如果试图这样从函数返回引用:return ($this->value);,这将不会起作用,因为在试图返回一个表达式的结果而不是一个引用的变量。只能从函数返回引用变量——没别的方法。如果代码试图返回一个动态表达式或 new 运算符的结果,自 PHP 4.4.0 和 PHP 5.1.0 起会发出一条 E_NOTICE 错误。
Tags: PHP引用 PHP传递
相关文章
- ·PHP引用传递与引用&一些用法介绍(2014-02-22)
- ·php引用(&)与文件引用详解(2014-08-06)
- ·php引用返回function & fun();学习笔记(2015-04-09)
- ·PHP传值与传引用的区别例子对比(2015-04-10)
- ·php 传值赋值和引用赋值笔记(2015-12-10)
- ·PHP引用符&的使用方法汇总(2015-12-12)
- ·PHP引用的调用方法分析(2019-08-18)
- ·php引用传值实例详解学习(2020-05-16)
- ·php中引用符号(&)的使用详解(2020-07-02)
- ·PHP引用(&)各种使用方法实例详解(2020-10-29)
- ·PHP基础之引用的解释3——引用的取消和定位(2021-01-02)
- ·PHP基础之引用的解释1——引用是什么、不是什么、做什么(2021-01-02)
- ·PHP的引用详解(2021-05-14)
- ·PHP如何通过传引用的思想实现无限分类(代码简单)(2021-06-20)
- ·深入理解PHP变量的值类型和引用类型(2021-06-20)
- ·PHP中引用类型和值类型功能与用法示例(2021-11-11)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)