2013-03-12 102 views
1

我有一个包含大量重复项的“发布标题”数据库,有时候有超过4个标题相同的帖子。删除数组中的所有唯一标题条目

我想构建一个数组,获取ID +标题重复条目。

$titles = array(); 
$duplicates = array(); //should be multi-dimensional array containing ID and title of each duplicate entry 

//while statement 
if (!in_array($post_title, $titles)){   
    array_push($titles, $post_title)); 
} else { 
    array_push($duplicates, $post_title)); 
} 
//end while 

这样做的问题是,我$duplicates数组只包含“第二”的条目,或“重复” - 我想都存储在同一阵列英寸我如何使用array_diff或合并或类似的东西来做到这一点?

I.e.如果两个帖子包含相同的标题,我希望这两个结束在我的$ duplicates数组中,并将相应的id和标题放在一起。

还有的array_unique功能太多,但我不能完全弄清楚如何在这种情况下使用此...

+0

会很高兴地看到原来的阵列的样子和你怎么样做while循环。 – Luceos 2013-03-12 15:30:52

回答

0

假设$titles[] = array('id' => integer, 'title' => string);同时又有ID:标题是1:1映射

$count = array(); 

foreach($titles as $title) { 
    if(!isset($count[$title['id']])) { 
    $count[$title['id']] = 1; 
    } else { 
    $count[$title['id']]++; 
    } 
} 

foreach($titles as $title) { 
    if($count[$title['id']] > 1) { 
    $duplicates[] = $title; 
    } 
} 
0
if (!in_array($post_title, $titles)){ 

     array_push($titles, $post_title)); 

} 
array_push($duplicates, $post_title)); 


//end while 

这样你存储原始和$重复数组中的重复。

或者您可以使用: $titles = array_unique($original_array);

+0

谢谢Luceos,但我想删除所有不重复的条目 – Tim 2013-03-12 15:32:11

+0

肯定是误解了你的问题。祝你好运。 – Luceos 2013-03-12 15:40:54