加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php指针 为什么 PHP 按值而不是按引用将数组推入另一个数组?

发布时间:2022-12-09 13:32:59 所属栏目:PHP教程 来源:网络
导读: 问:我一直认为 PHP 默认通过引用来处理数组。但是,在下面的代码片段中,情况并非如此,为这个问题和我正在编写的 RTF 解析器的一部分做好了准备。有人可以解释我为什么吗?
$stack = [];

问:我一直认为 PHP 默认通过引用来处理数组。但是,在下面的代码片段中,情况并非如此,为这个问题和我正在编写的 RTF 解析器的一部分做好了准备。有人可以解释我为什么吗?

$stack = [];

$group = ["level" => 0, "word" => "", "groups" => []];

$stack[] = $group;

php指针_php fseek指针_php 读文件不更新指针

$group["word"] = "test";

$group = ["level" => 1, "word" => "", "groups" => []];

现在我希望 $stack[0]["word"] 包含值“test”,但它没有。这可能是因为我在将 $group 推入 $stack 后为其分配了另一个值吗?

答:我不知道你为什么这么想。你可能误解了两件事:

php指针_php fseek指针_php 读文件不更新指针

PHP 使用了一种称为“写入时复制”的优化,这基本上意味着如果两个数组相同,它们可以共享相同的内存。一旦数组不同,它们就会被分开。

PHP对象作为指针传递(与引用变量不同),因此将对象分配给新变量不会创建新对象,而是创建指向同一对象的新指针。这不适用于数组。

有关 PHP 中实际引用的解释,我建议阅读PHP 手册中的“References Explained”。

引用赋值是通过使用=&而不是=,(例如$stack[] =& $group;)来实现的php指针,它将两个变量绑定在一起,这样无论你分配给哪个变量,都会受到影响。

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!