2014-09-13 36 views
-1

我有一個數組包含類X的多個對象,其中一些具有完全相同的值。從列表中刪除元素與參考

我也有一個參考(讓我們把它命名爲R)到這個數組中的一個對象(類X)。

是否可以從數組中刪除R引用的對象,而不刪除除引用之外的其他相同對象?

+0

你有代碼共享,使您的問題/問題更清楚? – Sugar 2014-09-13 17:53:35

回答

0

對於對象$a和類X的$b

如果$a = &$b$a === $b返回true。

if $a = clone $b$a === $b返回false。

所以來這裏的O(N^2)算法:

$obj_array = array(/* ... */); 

$keys = array_keys($obj_array); 

for($i = 0; $i < sizeof($keys); ++$i) { 
    $duplicate = false; 
    for($j = 0; $j < $i; ++$j) { 
     if(!empty($obj_array[$keys[$j]]) && $obj_array[$keys[$i]] === $obj_array[$keys[$j]])) { 
      $duplicate = true; 
     } 
    } 
    if($duplicate) { 
     unset($obj_array[$keys[i]]); 
    } 
}