Php 如何从对象本身中删除对象?

Php 如何从对象本身中删除对象?,php,Php,我有一个对象数组(A),其中有一个对象数组(B)。 我正在尝试将B移动到数组a中的其他对象。 我试着用这个: public function killToken($a) { array_push($a->tokens,$this); // Put this token in new array (works) unset($this); // Remove token from this array (does not work) }

我有一个对象数组(A),其中有一个对象数组(B)。
我正在尝试将B移动到数组a中的其他对象。
我试着用这个:

public function killToken($a) {
    array_push($a->tokens,$this);  // Put this token in new array (works)
    unset($this);                  // Remove token from this array (does not work)
}
我通过以下方式调用此函数:
$b->killToken($a)

我尝试了几种不同的方法,但我就是不知道如何从物体内部去除它


任何帮助都将不胜感激。

在我看来,您尝试这样做是在破坏封装:

array_push($a->tokens,$this);
您不应该从
$b
中修改
$a
的状态。您只能从
$b
中修改
$b
的状态,并告诉
$a
修改其自身的状态:

$b->killToken($a); // only removes $a from $b->tokens
$a->addToken($b); // adds $b to $a->tokens
这是OO设计的基本原则之一


Edit:也就是说,
unset($foo)
不是从数组中删除元素的方式。可以为元素设置索引,然后可以像取消设置($array[$index])
那样取消设置索引,还有一些其他不同的方法。

$this
在数组中没有上下文。我认为你没有很清楚地解释你的问题。如果可以的话,试着提供一个数据结构的例子。。可以那么,
$b
是一个具有属性的对象,该属性是其他对象的数组吗?
$a
是要从该数组属性中删除的对象吗?