从数组中删除双重条目

时间:2015-11-21 08:14:49

标签: php arrays

我在php中有以下数组:

[0] => Array(
  (
    [post_id] => 492,
    [user_id] => 1
  )
[1] => Array(
  (
    [post_id] => 501,
    [user_id] => 1
  )
[2] => Array(
  (
    [post_id] => 568,
    [user_id] => 13
  )
[3] => Array(
  (
    [post_id] => 897,
    [user_id] => 13
  )

我想要做的是删除user_id已经存在的那些。所以结果应该是这样的:

[0] => Array(
  (
    [post_id] => 492,
    [user_id] => 1
  )
[1] => Array(
  (
    [post_id] => 568,
    [user_id] => 13
  )

我需要一个数组,其中每个user_id只存在一次。

array_unique()不适用于此示例。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以随时循环查找唯一值:

$exists = array();
foreach($items as $key => $item) {
    if(!in_array($item['user_id'], $exists)) {
        $exists[] = $item['user_id'];
    } else {
        unset($items[$key]);
    }
}

这将取消设置$exists数组中已存在的任何数组。

答案 1 :(得分:0)

这是解决问题的简单功能。

 $array = Array();
 $array[] = Array('post_id'=>492 , 'user_id' => '1');
 $array[] = Array('post_id'=>501 , 'user_id' => '1');
 $array[] = Array('post_id'=>568 , 'user_id' => '13');
 $array[] = Array('post_id'=>897 , 'user_id' => '13');


 print_r($array);
 print_r(make_unique_by_key($array,'user_id'));
 function make_unique_by_key($m_arr , $key) {

    $tmp_arr = array();
    foreach ($m_arr as &$item) {
        if (!isset($tmp_arr[$item[$key]])) {
         $tmp_arr[$item[$key]] =& $item;
        }
    }
    $ret_arr = array_values($tmp_arr);
    return $ret_arr;
 }