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配列に「2番目」のエントリまたは「重複」のみが含まれていることです-両方を同じ配列に格納したいです。array_diffまたはマージなどを使用してこれを行うにはどうすればよいですか?

つまり、2 つの投稿に同じタイトルが含まれている場合、これらの両方を $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 に答える