从引用中删除数组中的元素

时间:2014-09-13 17:45:28

标签: php arrays reference element

我有一个包含多个类X对象的数组,其中一些具有完全相同的值。

我还有一个引用(让我们将它命名为R)给这个数组中的一个对象(类X)。

是否可以从数组中删除R引用的对象,而不删除除R引用之外的其他相同对象?

1 个答案:

答案 0 :(得分:0)

对于X类的对象$a$b

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

如果$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]]);
    }
}