我有一个包含多个类X
对象的数组,其中一些具有完全相同的值。
我还有一个引用(让我们将它命名为R
)给这个数组中的一个对象(类X
)。
是否可以从数组中删除R
引用的对象,而不删除除R
引用之外的其他相同对象?
答案 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]]);
}
}