首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中,有人能解释一下克隆和指针引用的区别吗?

在PHP中,有人能解释一下克隆和指针引用的区别吗?
EN

Stack Overflow用户
提问于 2010-09-01 02:22:01
回答 1查看 4K关注 0票数 18

首先,我了解编程和对象,但下面的内容对我在PHP中没有多大意义。

在PHP中,我们使用&运算符来检索对变量的引用。我把引用理解为用不同的变量来引用相同的“事物”。如果我举个例子

代码语言:javascript
复制
$b = 1;
$a =& $b;
$a = 3;
echo $b;

将输出3,因为对$a所做的更改与对$b所做的更改相同。相反:

代码语言:javascript
复制
$b = 1;
$a = $b;
$a = 3;
echo $b;

应输出% 1。

如果是这样,为什么需要clone关键字呢?在我看来,如果我设置

$obj_a = $obj_b则对$obj_a所做的更改不应影响$obj_b,相反,$obj_a =& $obj_b应指向同一对象,因此对$obj_a所做的更改将影响$obj_b。

然而,在PHP中,似乎$obj_a上的某些操作确实会影响$obj_b,即使没有指定引用运算符($obj_a = $obj_b)。这导致了我今天在使用DateTime对象时遇到了一个令人沮丧的问题,我最终通过以下基本操作修复了这些问题:

代码语言:javascript
复制
$obj_a = clone $obj_b

但是,我编写的大部分php代码似乎不需要像本例中那样显式克隆,没有它也能正常工作。这里发生了什么事?为什么PHP一定要这么笨拙??

EN

回答 1

Stack Overflow用户

发布于 2014-11-13 01:39:30

我写了一个演示文稿来更好地解释php是如何使用它的变量来管理内存的:

https://docs.google.com/presentation/d/1HAIdvSqK0owrU-uUMjwMWSD80H-2IblTlacVcBs2b0k/pub?start=false&loop=false&delayms=3000

看一看;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3611986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档