删除数组中的所有唯一标题条目

时间:2013-03-12 15:14:44

标签: php arrays

我有一个包含大量重复项的“帖子标题”数据库,有时会有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数组只包含'second'条目,或者'duplicate' - 我想将它们存储在同一个数组中。如何使用array_diff或合并或类似的东西来执行此操作?

即。如果两个帖子包含相同的标题,我希望这两个最终都在我的$ duplicates数组中,并且各自的ID和标题一起。

还有array_unique函数,但在这种情况下我无法弄清楚如何使用它...

2 个答案:

答案 0 :(得分:0)

if (!in_array($post_title, $titles)){

      array_push( $titles, $post_title) );

}
array_push( $duplicates, $post_title) );


//end while

这样就可以将原始副本和重复项存储在$ duplicates数组中。

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

答案 1 :(得分:0)

假设$titles[] = array( 'id' => integer, 'title' => string );以及id:title是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;
  }
}