2014-06-28 13 views
-1
从关联数组重复的条目

我的阵列是如何删除PHP

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两次。但我想要一次。所以在我的第二个数组中(这将是我的答案),我删除它。

+1

你尝试过什么吗? –

+0

我想这个东西$ unique = array_map(“unserialize”,array_unique(array_map(“serialize”,$ affiliate)));这里$联盟是我的阵列 – user3214124

回答

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; 
    } 
} 
+0

真棒和感谢人 – user3214124

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);

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 s。变体1将包含每个afffiliate_key(如您的示例中)的最后一次出现,而变体2将添加第一次出现的任何affiliate_key,并忽略所有后续的出现。

+0

好。可以使用返回零索引数组array_values()。 –