2013-03-12 80 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