Php 如何从对象本身中删除对象?
我有一个对象数组(A),其中有一个对象数组(B)。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) }
我正在尝试将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
是要从该数组属性中删除的对象吗?