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

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

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

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

查看所有标签

猜你喜欢:

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

精通Windows应用开发

精通Windows应用开发

[美] Jesse Liberty Philip Japikse Jon Galloway / 苏宝龙 / 人民邮电出版社 / 59.00元

Windows 8.1的出现不仅提供了跨设备的用户体验,也提供了跨设备的开发体验。本书着眼于实际项目中所需要的特性,以及现有C#编程知识的运用,对如何最大限度地利用Metro、WinRT和Windows 8进行了讲解,内容详尽,注重理论学习与实践开发的配合。 Windows 8.1和WinRT的作用及其特殊性 如何使用先进特性创建具有沉浸感和吸引力的Windows 8.1应用 如......一起来看看 《精通Windows应用开发》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

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

HSV CMYK互换工具