gpt4 book ai didi

PHP 节点不通过引用传递

转载 作者:搜寻专家 更新时间:2023-10-31 20:45:54 24 4
gpt4 key购买 nike

我在一个类中有一堆 dom 操作函数。其中一个函数将唯一 ID 分配给特定节点。

$resource_info_node->setAttribute('id', 'resource_'.$this->ids);
$details['id'] = 'resource_'.$this->ids;
$details['node'] = $resource_info_node;
$this->resource_nodes['resource_'.$this->ids] = $details;
$this->ids += 1;

稍后我想查找和修改那些节点。我试过了:

$current_node = $this->resource_nodes[$id]['node'];

当我 print_r() 时,我发现这个节点是原始节点的副本。它具有原始节点的属性,但不是 DOM 树的一部分。我得到相同的结果:

$this->content->getElementById($id);

我想我是基于将节点引用存储在数组中的。我认为这是一件好事。即使没有,之后使用 getElementByID() 也应该返回 dom 中的节点。

我认为,在 PHP 中,所有对象都是通过引用传递的。包括 DOM 节点。关于如何测试实际发生的事情的任何想法。

编辑:

好吧,我用过:

$this->xpath->query('//*[@id]');

返回了正确数量的带有 ID 的项目。当我编辑它时,该节点不在 DOM 树中。

$current_node = &$this->resource_nodes[$id]['node'];

使用引用语法没有影响。

最奇怪的是 get elementById() 没有返回 dom 中的节点。它具有所有正确的属性,除了没有 parentNode。

FIX - 不回答:

我只是使用了 xpath 而不是我的引用或 getElementById()。

最佳答案

使用显式引用:

$current_node = &$this->resource_nodes[$id]['node'];

并修改$current_node

关于PHP 节点不通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13348774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com