2012-01-25 76 views
1

我有一個對象數組(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);

我試過幾個在這個變化,但我只是不知道如何從內部擺脫對象。

任何幫助,將不勝感激。

+0

'$ this'在數組中沒有上下文。我不認爲你很清楚地解釋你的問題。如果可以,請嘗試提供一個數據結構的例子。 – FtDRbwLXw6

+0

啊..好吧。所以'$ b'是一個具有屬性的對象,該屬性是其他對象的數組?而'$ a'是你想從該數組屬性中移除的對象? – FtDRbwLXw6

回答

2

在我看來,你試圖這樣做破壞了封裝:

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設計的基本原則之一。

編輯:這就是說,unset($foo)是不是如何從數組中刪除元素。你可以使用array_search()作爲元素,它會給你索引,然後你可以取消像unset($array[$index])這樣的索引,還有其他一些不同的方法。

+0

它的工作!非常感謝!! –