我的数组是
Array
(
[0] => Array
(
[id] => 20
[new_id] => 958
[affiliate_id] => 33
)
[1] => Array
(
[id] => 21
[new_id] => 959
[affiliate_id] => 45
)
[2] => Array
(
[id] => 22
[new_id] => 960
[affiliate_id] => 23
)
[3] => Array
(
[id] => 23
[new_id] => 961
[affiliate_id] => 33
)
)
我想要数组
Array
(
[0] => Array
(
[id] => 20
[new_id] => 958
[affiliate_id] => 33
)
[1] => Array
(
[id] => 21
[new_id] => 959
[affiliate_id] => 45
)
[2] => Array
(
[id] => 22
[new_id] => 960
[affiliate_id] => 23
)
)
我想删除affiliate_id
的重复值。根据第一个数组,我得到affiliate_id
的值为33
两次。但我想要它一次。所以在我的第二个数组中(这将是我的答案)我删除它。
答案 0 :(得分:1)
尝试类似这样的东西,不如array_
一个衬里那么漂亮,但仍然是:
$existing_aff_ids = array();
$unique = array();
foreach ($affiliate as $aff) {
if (!isset($existing_aff_ids[$aff['affiliate_id']])) {
$unique[] = $aff;
$existing_aff_ids[$aff['affiliate_id']] = 1;
}
}
答案 1 :(得分:0)
这些不是重复值:
1. $input = array_map("unserialize",
array_unique(array_map("serialize", $data))
2. array_values(array_unique($data))
这种情况都失败了,因为它存在唯一的id值,它要求所有值都相同才能将其视为重复。
解决方案:将使数组检查相应字段的值。
foreach($data as $key=>$val)
{
if (is_array($val))
{
$val2 = arrayUnique($val);
}
else
{
$val2 = $val;
$newArray=array_unique($data);
$newArray=deleteEmpty($newArray);
break;
}
if (!empty($val2))
{
$newArray[$key] = $val2;
}
}
的print_r($ newArray);
答案 2 :(得分:0)
在答案中给出$affiliates
,循环遍历数组并检查affiliate_id
就行了
$unique_affiliates = array();
foreach($affiliates as $affiliate) {
$affiliate_key = $affiliate['key'];
/* Variant 1 */
$unique_affiliates[$affiliate_key] = $affiliate;
/* Variant 2 */
if(!isset($unique_affiliates[$affiliate_key])) {
$unique_affiliates[$affiliate_key] = $affiliate;
}
}
$unique_affiliates
中的所有条目都有唯一的affiliate_key
。变体1将包含每个afffiliate_key
的最后一次出现(如您的示例中所示),而变体2将添加任何affiliate_key
的第一次出现,并忽略所有后续的出现。