内容简介:php中的引用返回通常用在两个地方函数或者类的方法中。使用的时候需要有两个这样对$ans 的操作相当于对这段代码的含义, 本来 函数foo打算通过 静态变量 $arr 来缓存一些结果,加快程序的运行。比如执行一个 foo(100) 后,再次执行 foo(100) 就不会运行复制的op操作。直接给出结果
php中的引用返回通常用在两个地方函数或者类的方法中。使用的时候需要有两个 &
, 第一个是在函数定义或者类的方法定义的时候,函数名或者类的方法名前加 &
, 第二地方是 执行这个函数或者方法的是前面也应该有 &
。
使用方法
&
这样对$ans 的操作相当于对 $arr[$x]
的操作
php返回引用有什么用 | 修改函数内部的静态变量
// 一个比较复杂的操作 function op($x) { return $x * $x; } function &foo($x) { static $arr = array(); if(!isset($arr[$x])) { $arr[$x] = op($x); } return $arr[$x]; } # 重点 $ans 是 foo(100) 的一个引用, 而 foo(100) 的返回是 $arr[100] 。 所以 对 $ans 的操作会反应在 $arr[100] 中 $ans = &foo(100); echo 'foo(100) == ' . foo(100) . PHP_EOL; # 重要的执行语句 $ans = 100 , 就相当于操作 $arr[100] = 100 的结果 $ans = 100; echo 'run $ans = 100' . PHP_EOL; echo 'foo(100) == ' . foo(100) . PHP_EOL; ### 输出的结果 foo(100) == 10000 run $ans = 100 foo(100) == 100
这段代码的含义, 本来 函数foo打算通过 静态变量 $arr 来缓存一些结果,加快程序的运行。比如执行一个 foo(100) 后,再次执行 foo(100) 就不会运行复制的op操作。直接给出结果
现在有个需求想 调整一下输出的结果。这个时候, 引用返回就发挥作用了。
官方的示例
<?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. ?>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- [ PHP 内核与扩展开发系列] 函数返回值:引用参数与函数的执行结果
- [ PHP 内核与扩展开发系列] 函数返回值:引用参数与函数的执行结果
- golang的相关问题(返回局部变量指针、分配原语、init、值与引用、接口、内建函数等等)
- 强引用、软引用、弱引用、虚引用
- java的强引用、软引用、弱引用、幻象引用,引用队列总结
- Java 对象引用方式 —— 强引用、软引用、弱引用和虚引用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编译原理
Alfred V.Aho、Jeffrey D.Ullman、Ravi Sethi / 李建中 / 机械工业出版社 / 2003-8 / 55.00元
《编译原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。《编译原理》 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。《编译原理》一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理......一起来看看 《编译原理》 这本书的介绍吧!