如何在 PHP 中从数组中删除重复的对象
array_unique() 函数可以识别并消除数组中的重复元素。但是,对于包含对象的数组,此功能可能不会立即显现出来。要有效删除重复的对象,需要进行某些修改。
使用 SORT_REGULAR 的解决方案
要使 array_unique() 能够正确处理对象,请将 SORT_REGULAR 标志指定为第二个参数:
<code class="php"><?php class MyClass { public $prop; } $foo = new MyClass(); $foo->prop = 'test1'; $bar = $foo; $bam = new MyClass(); $bam->prop = 'test2'; $test = array($foo, $bar, $bam); print_r(array_unique($test, SORT_REGULAR)); ?></code>
输出:
Array ( [0] => MyClass Object ( [prop] => test1 ) [2] => MyClass Object ( [prop] => test2 ) )
解释
通过使用 SORT_REGULAR,array_unique() 函数本质上比较了每个对象,将具有相同属性值的对象视为重复对象。
注意
虽然此方法有效地删除重复对象,但需要注意的是,它依赖于 ==比较而不是更严格的 === 比较。这意味着具有不同身份但相同属性的对象仍将被视为重复。
以上是如何在 PHP 中删除数组中的重复对象?的详细内容。更多信息请关注PHP中文网其他相关文章!