我有一个对象数组。在此数组中,存在重复值。我想在数组中找到重复项,将它们放在一个新数组中,删除原始数据,然后从第一个数组中获取打印信息,其中新数组中的键是相同的。
例如:
阵列1
[0]
[0] => ID: 123
[1] => 0fac686d86aba414411b58f6bce53a76
[1]
[0] => ID: 124
[1] => 0134b04a942cbc5336958c8cd09b82f3
[2]
[0] => ID: 125
[1] => 0fac686d86aba414411b58f6bce53a76
[3]
[0] => ID: 126
[1] => 0fac686d86aba414411b58f6bce53a76
数组2
[0]
[0] => ID: 125
[1] => ID: 126
我知道我可以做一些像找到重复的东西:
function array_not_unique( $array1 is array() )
{
return array_diff_key( $array1 , array_unique( $a ) );
}
但是我的挂断是,回到第一个数组并提取与重复数据匹配的ID。
对于那些可能需要知道的人:我正在解析RSS提要并找到节点的MD5。这就是我如何确定唯一性。
提前谢谢你。
答案 0 :(得分:1)
如果这些ID是唯一的,为什么不将它们作为原始数组的键,它将更容易使用:
[123] => 0fac686d86aba414411b58f6bce53a76
[124] => 0134b04a942cbc5336958c8cd09b82f3
这是你的意思吗?
$a = array(
123 => '0fac686d86aba414411b58f6bce53a76',
124 => '0134b04a942cbc5336958c8cd09b82f3',
125 => '0fac686d86aba414411b58f6bce53a76',
126 => '0fac686d86aba414411b58f6bce53a76'
);
$values = array();
$duplicate_keys = array();
foreach ($a as $key => $value)
{
if (in_array($value, $values))
{
$duplicate_keys[] = $key;
}
$values[] = $value;
}
foreach ($duplicate_keys as $id)
{
echo "Duplicate " . $id . ", " . $a[$id];
}
答案 1 :(得分:0)
你看过PHP的array_unique()
函数了吗?它维护着钥匙。