1

我有一个“帖子标题”数据库,其中包含很多重复项,有时有超过 4 个具有相同标题的帖子。

我想构建一个数组来获取每个重复条目的 ID + Title。

$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或合并或类似的东西来做到这一点?

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

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

4

2 回答 2

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

于 2013-03-12T15:23:17.370 回答
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;
  }
}
于 2013-03-12T15:28:49.093 回答