我的目标是在对象数组中找到重复对象,但仅限于特定的对象变量。根据特定键在对象数组中找到重复对象
而是使用两个的foreach循环像下面这样的,我正在寻找一个更好的(更优雅)的方式找到重复:
foreach ($data as $date) {
foreach ($data as $innerDate) {
if ($date->birthday == $innerDate->birthday &&
$date->street == $innerDate->street &&
$date->streetnr == $innerDate->streetnr &&
$date->zipcode == $innerDate->zipcode &&
$date->twinid == $innerDate->twinid &&
$date !== $innerDate) {
// Duple
}
}
}
谢谢!
现在,我使用下面的代码,根据Tarilo的想法:
usort($data, function($obj_a, $obj_b){
if ($obj_a->birthday == $obj_b->birthday &&
$obj_a->street == $obj_b->street &&
$obj_a->streetnr == $obj_b->streetnr &&
$obj_a->zipcode == $obj_b->zipcode &&
$obj_a->twinid == $obj_b->twinid) {
// Duple
}
});
看起来比很多高2的foreach循环;-)
好主意!我想我用'usort()'和一个回调函数来尝试这个函数,该函数根据变量对数组进行排序。希望这个比两个foreach循环更快。谢谢! – Tom
我在上面的问题上发布了我的解决方案。谢谢你的想法。 – Tom