ホームページ  >  記事  >  バックエンド開発  >  PHP で配列内の重複データを特定して削除する方法

PHP で配列内の重複データを特定して削除する方法

WBOY
WBOYオリジナル
2016-07-25 08:58:58998ブラウズ
  1. if (count($array) != count(array_unique($array))) {
  2. echo '配列に重複した値があります'
  3. }
  4. ?>
コードをコピー

PHPは重複した配列データを削除します

  1. $input = array("a" => "緑","", "赤","b" => "緑", "" ,"blue", "red","c" => "witer","hello","witer");

  2. //$result = array_unique($input); //重複した要素を削除します
  3. $result = a_array_unique ($input); //要素を 1 つだけ残す
  4. foreach($result as $aa)
  5. {
  6. echo $aa."
    ";
  7. }
  8. function multi_unique($array) {
  9. foreach ( $array as $k=>$na)
  10. $new[$k] = Serialize($na);
  11. $uniq = array_unique($new);
  12. foreach($uniq as $k=>$ser)
  13. $new1[$k] = unserialize($ser);
  14. return ($new1);
  15. }

  16. function a_array_unique($array)//より良く書かれています

  17. {
  18. $out = array( );
  19. foreach ($array as $key=>$value) {
  20. if (!in_array($value, $out))
  21. {
  22. $out[$key] = $value;
  23. }
  24. }
  25. return $ out;
  26. }
  27. ?>
コードをコピー

PHP 配列には重複項目を削除する組み込み関数 array_unique () がありますが、PHP の array_unique 関数は 1 次元配列にのみ適用されます多次元配列には適していません。 以下は、2 次元配列の array_unique 関数を実装します。

  1. function unique_arr($array2D,$stkeep=false,$ndformat=true)
  2. {
  3. // 第 1 レベルの配列キーを保持するかどうかを決定します (第 1 レベルの配列キーは数値以外である必要があります)
  4. if($stkeep) $stArr = array_keys($array2D);
  5. // セカンダリ配列キーを保持するかどうかを決定します (すべてのセカンダリ配列キーは同じである必要があります)
  6. if($ndformat) $ndArr = array_keys(end($array2D)) ;
  7. //次元削減。implode を使用して、1 次元配列をカンマで接続された文字列に変換することもできます
  8. foreach ($array2D as $v){
  9. $v = join(" ,",$v);
  10. $ temp[] = $v;
  11. }
  12. // 繰り返される文字列、つまり、繰り返される 1 次元配列を削除します
  13. $temp = array_unique($temp);
  14. // 逆アセンブルされた配列を再構築します
  15. foreach ($ temp as $k => $v)
  16. {
  17. if($stkeep) $k = $stArr[$k];
  18. if($ndformat)
  19. {
  20. $tempArr =explode(",", $v);
  21. foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
  22. }
  23. else $output[$k] =explode(" ,",$ v);
  24. }
  25. return $output;
  26. }
  27. ?>
コードをコピー

テストケース:

  1. $array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'first'=> ;array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333 '));
  2. print_r($array2D);
  3. print_r(unique_arr($array2D,true));
コードをコピー
2回 最後のページ

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。