使用 array_unique 的唯一对象
在 PHP 中,array_unique 函数有助于消除数组中的重复值。然而,当处理包含对象的数组时,此功能似乎无法按预期工作。
输入解决方案:
对于对象数组,您可以使用 array_unique与 SORT_REGULAR 比较标志。该标志指示函数通过对象的属性而不是对象引用来比较对象。
实现:
考虑角色对象数组:
class Role {
public $name;
}
$foo = new Role();
$foo->name = 'test1';
$bar = $foo;
$bam = new Role();
$bam->name = 'test2';
$test = array($foo, $bar, $bam);
使用 array_unique 删除重复项:
print_r(array_unique($test, SORT_REGULAR));
输出:
Array ( [0] => Role Object ( [name] => test1 ) [2] => Role Object ( [name] => test2 ) )
注意:
需要注意的是,array_unique 与 SORT_REGULAR 使用“==”比较,而不是严格比较(“===”)。这意味着具有相同属性但不同对象引用的对象仍将被视为重复。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3