我需要从php中的数组中删除一个对象,但是我需要对象引用仍然存在,当我尝试使用unset()
时所描述的here它取消了数组元素和对象本身的设置,如何在不破坏对象的情况下从数组中删除引用?
我的代码如下所示:
$this->array[id] = myobject;
unset($this->array[$id]);
答案 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对象