数据类型 - 引用

本文深入解析PHP中的引用概念,详细阐述了引用如何通过ZEND_REFERENCE结构实现变量间的直接链接,以及这种链接机制如何影响变量的修改操作。文章还强调了引用只能通过&运算符创建,而不能通过简单的赋值传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用是一种指向其他数据类型的结构,类似C语言中指针的概念。当修改引用类型的变量时候,其修改将反映到实际引用的变量上。辣么当我们使用$a = &$b这样一个引用时候发生了什么呢?来我们来看看流程吧

  1. $a = &$b ,首先为$a 变量分配一个Zend_reference结构,内嵌了一个zval ,这时候zval.value指向原来zval的value
  2. 将原来$b 的类型改为IS_REFERENCE引用类型,原来zval的value指向新建的zend_reference结构

    

struct _zend_reference {
   zend_refcounted_h gc;
   zval              val;
};
<?php
   $b = "Hello world";
   $a = &$b;  

 

 

来举个栗子:

 

注意:使用引用,只有通过&产生,无法通过赋值来传递,例如:


<?php
    $b = "Hello World";
    $a = &$b;
    $c = $a; //此时$c不是一个引用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值