- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我无法理解为什么即使我创建了副本,PHP 也无法为两个 对象取消设置我的children
属性。
当我分配 $singleNode = $node
时,它不应该删除 singleNode 子节点,因为我没有传递引用,但它的行为是那样的。
谁能帮我解决这个问题?
您可以在 PHP CLI 中运行它以了解我的意思
<?php
$node = new stdClass();
$node->title = 'Test';
$node->children = [1,2,3,4,5];
// Does the node have children?
if (property_exists($node, 'children')) {
echo '$node has children' . PHP_EOL;
} else {
echo '$node NOT has children' . PHP_EOL;
}
// Assign node to a new variable, and remove children
$singleNode = $node;
if (property_exists($singleNode, 'children')) {
echo '$singleNode removed children' . PHP_EOL;
unset($singleNode->children);
}
// Does the node have children?
if (property_exists($node, 'children')) {
echo '$node has children' . PHP_EOL;
} else {
echo '$node NOT has children' . PHP_EOL;
}
我发现我可以做到:
$singleNode = 克隆 $node
这样做正确吗?为什么会这样?无论我将变量分配给什么,该变量都在引用内存中的相同项目?
最佳答案
您只有一个对象。要获得第二个对象,您必须创建一个克隆
。从技术上讲,$singleNode = $node
正在复制仍然引用同一对象的对象句柄。
见 http://php.net/manual/en/language.oop5.cloning.php和 http://php.net/manual/en/language.oop5.references.php
关于PHP Unset 充当引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253847/
如果没有子类化dict,一个类需要被认为是一个映射,以便它可以通过**传递给一个方法。 from abc import ABCMeta class uobj: __metaclass__ =
所以。我正在研究 PHP/MySQLi atm,为此我正在做一个电影数据库。我是 PHP 新手,我已经在网上搜索了 3 天有同样问题的人,但我没有找到任何东西。 我的问题是我需要一个编辑按钮,这样就可
我的代码是这样的: void some_func(void *source) { ... double *casted = reinterpret_cast(source);
我无法准确理解 array_splice 和 array_slice 的作用。据我所知,array_splice 应该在取出某些元素后返回一个数组,而 array_slice 应该检索数组的一部分。
我从数据库中检索了 54 项: items = Item.where(condition) items.count == 54 and then: items.each {|i| i.tag_list
我在 HTML 表单中有一个简单的图像,充当按钮。当单击普通按钮时,我会使用 onClick 属性对其进行操作,但是对于我的图像,当您单击它们时,onClick 会起作用,但图像也会提交表单,而实际上
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我正在使用一个名为 acts_as_votable 的 gem让我的模型可以投票。 目前一切正常。 但是每次有人为帖子投票时,页面都必须刷新。如何在不刷新页面的情况下进行投票。我可以添加一个简单的 j
我的 bootstrap 3 页面在第一次页面加载时仅显示一个 div。当我单击“打开下一个 block ”按钮时,会显示另一个 div,如果我单击第二个 div,则会显示第三个 div。这样我总共可
我主要对 感兴趣 a11y 方面 因此,您可能知道,有时您可能希望有一个用作 anchor 的按钮。 这些是解决这个问题的 4 种方法(我能想到): 1. anchor 元素内的按钮 Button 2
在我的 main.storyboard 中,我有一个 UIImage View ,它只是一个通用的 Facebook 登录按钮。但是,我很困惑,因为使用这些通用步骤 override func vie
问题 我有这个 bash 脚本: ACTIVE_DB=$(grep -P "^[ \t]*db.active" config.properties | cut -d= -f2 | tr -s " ")
我目前正在使用 inline-block instead of floats 构建一个使用漂亮网格结构的站点. 简而言之,我的网格是这样工作的(JSFiddle) : HTML
我最近开始使用 Bootstrap 并且没有遇到任何问题,除了我遇到的这个问题。我已经使用它建立了自己的个人网站,并将其设计为响应式的,到目前为止,它在所有方面看起来都很棒。 但我遇到的问题是,从 9
这是一个不幸的问题,但我看不到任何其他解决方法。 基本上,我使用 Kendo UI 面板栏来创建可扩展列表。问题是,当您使用 作为子列表,面板栏功能不起作用。 fiddle 示例: http://js
我正在尝试获取一个 16 位长的数字 0x1122334455667788 并将其移位以说明小端编号。 使用下面的示例代码从内存单元中加载数字 void endianCompute(memory_t
我目前正在使用一堆输入文本字段,我想将其更改为 DIV,但我的大部分 JS 函数都使用 document.getElementById("inputField1").value每当输入字段的值设置如下
是否可以使用 HTML5 (或任何其他元素)就像一个 iframe,但内容是从它的子元素而不是从 URL 加载的?例如,如果您要在主文档中进行此设置: 以及foo.html的内容是: 主文档会显
我正在尝试使用 EJB session Bean 的示例。我想看看他们的区别。我的基本项目图如下; http://img109.imageshack.us/img109/8262/85220418.p
我们公司有一个项目,现在使用 nginx 作为反向代理来提供静态内容和支持 comet 连接。我们使用长轮询连接来摆脱不断的刷新请求,让用户立即获得更新。 现在,我知道已经为 Node.js 编写了很
我是一名优秀的程序员,十分优秀!