php中的引用返回是什么、有什么用

栏目: PHP · 发布时间: 7年前

内容简介: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.
?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

技术元素

技术元素

[美] 凯文·凯利 / 张行舟、余倩、周峰、管策、金鑫、曾丹阳、李远、袁璐 / 译言·东西文库/电子工业出版社 / 2012-5 / 55.00元

我会将我不成熟的想法、笔记、内心争论、草稿以及对其他文章的回应都写在《技术元素》中,这样我就能知道自己到底在想些什么。——KK “技术元素”(technium)是凯文•凯利专门创造出来的词语。“技术元素不仅仅包括一些具象的技术(例如汽车、雷达和计算机等),它还包括文化、 法律、社会机构和所有的智能创造物。”简而言之,技术元素就是从人的意识中涌现出来的一切。KK把这种科技的延伸面看成一个能产生......一起来看看 《技术元素》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具