PHP|PHP引用的简单解释

引用

PHP的引用意味着我们可以用不同的名字来访问同样的内容。

指针也是一样的,可以有不同名字的指针,访问同样的内容。

但是,PHP的引用并不是指针。引用并不能访问内存。

实际上,我们可以把引用理解为Unix系统的硬链接

使用

<?php

$a = 'Hello world';
$b = &$a;

$a$b在这里是完全相同的,这并不是$a指向了$b或者相反,而是$a$b指向了同一个地方。

如果具有引用的数组被拷贝,其值不会解除引用。对于数组传值给函数也是如此。

如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。但是值会是null

除此之外,引用还可以用来做两件事:

  • 引用传递变量

  • 引用返回

引用返回

引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。

<?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.
?>

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

定位

许多 PHP 的语法结构是通过引用机制实现的.

  • global 引用

  • $this

当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。

<?php
    $var =& $GLOBALS["var"];
?>

ThinkingPool
Y1RReE5qazFOVFl5

Hello world!

871 声望
54 粉丝
0 条评论
推荐阅读
Java|序列化异常StreamCorruptedException的解决方法
参考:[链接] {代码...} 关键处理 byte[] str = baos.toByteArray();

niecprea阅读 3.2k

php实现只需要一个QQ号就可以获得用户信息
{代码...} DEMO:[链接]此处输入你的QQ号

TANKING27阅读 7.3k评论 5

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go4阅读 1.7k评论 2

封面图
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。

煎鱼4阅读 2.1k

面试官:请说一下如何优化结构体的性能?
使用内存对齐机制优化结构体性能,妙啊!前言之前分享过2篇结构体文章:10秒改struct性能直接提升15%,产品姐姐都夸我好棒 和 Go语言空结构体这3种妙用,你知道吗? 得到了大家的好评。这篇继续分享进阶内容:结...

王中阳Go4阅读 3.7k评论 2

封面图
Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。

TANKING1阅读 1.7k

封面图

Hello world!

871 声望
54 粉丝
宣传栏