如何在不破坏对象的情况下从php数组中删除对象引用

时间:2013-07-26 17:16:13

标签: php arrays object

我需要从php中的数组中删除一个对象,但是我需要对象引用仍然存在,当我尝试使用unset()时所描述的here它取消了数组元素和对象本身的设置,如何在不破坏对象的情况下从数组中删除引用?

我的代码如下所示:

$this->array[id] = myobject;
unset($this->array[$id]);

3 个答案:

答案 0 :(得分:2)

这段代码对我来说很合适:

$my_var = 1;
$my_array = array();
$id = 0;

$my_array[$id] = $my_var;
print_r($my_array);
print_r($my_var);

unset($my_array[$id]);
print_r($my_array);
print_r($my_var);

最后,我已从$id清除了$my_array(0)索引,$my_var仍然等于1

答案 1 :(得分:1)

您需要此对象的其他参考。看看这段代码:

<?php
$var = 1;

$data = array("id" => &$var);
unset($data['id']);

var_dump($var);
var_dump($data);

打印:

int(1)
array(0) {
}

在其他地方保留对该对象的另一个引用。

答案 2 :(得分:1)

你是否曾尝试在销毁数组引用之前保留对象的引用?

$user = new User('name','surname');
$myUserReference = $user;
$data = array('user'=> $user);

print_r($data);
unset($data['user']);
print_r($data);

这应该打印一个包含$ user对象和一个空数组的数组。您应该在$ myUserReference var

中引用$ user对象