English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHPの2次元配列で重複を取り除く方法【各キー値を保持】

この記事では、PHPの二つの次元の配列から重複を取り除く方法について説明します。皆さんに参考にしていただければ幸いです。以下の通りです:

以下の二つの次元の配列に対して、重複を取り除く必要があります:

$arr = array(
     '0'=array(
          'name'=>'james'
          'age'30,
          ),
     '1=>array(
          'name'=>'susu'
          'age'26,
          ),
     '2=>array(
          'name'=>'james'
          'age'30,
          ),
     'new'=array(
          'name'=>'kube'
          'age'37,
          ),
     'list'=array(
          'name'=>'kube'
          'age'27,
          ),
     );

1、二つの次元の配列の中の内層の配列の値が完全に同じでないことを確認し、重複する項を削除します:

以下のコード:

<?php
$arr = array(
     '0'=array(
          'name'=>'james'
          'age'30,
          ),
     '1=>array(
          'name'=>'susu'
          'age'26,
          ),
      '2=>array(
          'name'=>'james'
          'age'30,
          ),
      'new'=array(
          'name'=>'kube'
          'age'37,
          ),
      'list'=array(
          'name'=>'kube'
          'age'27,
          ),
      );
printf("配列を変換する前に:<br>");  //元の配列を出力します
print_r($arr);
echo "<br/>";
function more_array_unique($arr=array()){
  foreach($arr[0] as $k => $v){
    $arr_inner_key[]= $k;  //まず、二つの次元の配列の中の内層の配列のキーと値を一つの次元の配列に記録します
  }
  foreach ($arras $k => $v){
    $v =join(",",$v);  //次元を下げます implode()を使用しても可です
    $temp[$k] =$v;   //元のキー値を保持します $temp[]が元のキー値を保持しないことを意味します
  }
  printf("分割後の配列:<br>");
  print_r($temp);  //分割後の配列を出力します
  echo"<br/>";
  $temp =array_unique($temp);  //重複を取り除きます:重複する文字列を取り除きます
  foreach ($tempas $k => $v){
    $a = explode(",",$v);  //分割後の再構成:例えば、Array( [0] => james [1] => 30 )
    $arr_after[$k]= array_combine($arr_inner_key,$a); //元のキーと値を再び統合します
  }
  //ksort($arr_after);//並び替えが必要な場合:ksortを使用して配列を並び替え(元のキー値keyを保持), sortを使用するとキー値を保持しません
  return$arr_after;
}
$arr_new = more_array_unique($arr); //重複削除関数を呼び出します
printf("配列の重複削除:<br>");
print_r($arr_new);
echo "<br/>";
?>

出力結果:

配列を変換する前に:  //元の配列
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [2] => Array ( [name] => james [age]=> 30 ) [new] => Array ( [name] => kube [age] => 37 ) [list] =>Array ( [name] => kube [age] => 27 ) )
配列を分割した後: //分割後の配列
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
配列の重複削除: //重複を削除した配列
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2、 二次元配列の内部の一次元配列は特定のキー値が同じでないように、重複を削除します:

特定のキー値に対して重複を除去します

<?php
$arr= array(……); //同じ二次元配列
functionsecond_array_unique_bykey($arr, $key){
  $tmp_arr = array();
  foreach($arr as $k => $v)
  {
    if(in_array($v[$key], $tmp_arr))  //検索$v[$key]が$tmp_arr配列に存在するかどうか、存在する場合trueを返します
    {
      unset($arr[$k]); //変数を破壊します。$tmp_arrに同じ値が存在する場合、その値を削除します
    }
    else {
      $tmp_arr[$k] = $v[$key]; //異なる値をこの配列に保存します
    }
  }
  //ksort($arr); //ksort関数は配列をソートします(元のキー値keyを保持)sortはキー値を保持しません
  return $arr;
  }
  $key ='name';
  $arr_key = second_array_unique_bykey($arr,$key);
  printf("As for the given key->%s:<br>;
  print_r($arr_key);
  echo "<br/>";
?>

出力結果:

As for the given key->name:
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) )

PS:本サイトには、2つの比較的簡単で実用的なオンラインテキスト重複削除ツールがあります。皆様に推薦します:

オンライン重複項削除ツール:
http://tools.jb51.net/code/quchong

オンラインテキスト重複削除ツール:
http://tools.jb51.net/aideddesign/txt_quchong

PHPに関連する内容に興味を持つ読者は、本サイトの特集を参照してください:《PHP 配列(Array)操作技術大全》、《PHP 常用ループアルゴリズムと技術総まとめ》、《php 文字列(string)使用方法総まとめ》、《php 常用関数と技術総まとめ》、《PHP エラーハンドリングと例外処理方法総まとめ》、《PHP 基本文法入門教程》、《php オブジェクト指向プログラム設計入門教程》、《php+mysql データベース操作入門教程およびphp 常用データベース操作技術集約

本稿の内容が皆様のPHPプログラム設計に役立つことを願っています。

声明:本文の内容はインターネットから提供されています。著作権は原著者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされたものであり、本サイトは所有権を持ちません。人工的な編集は行われていません。また、関連する法的責任も負いません。著作権侵害の可能性がある内容を見つけた場合は、メールでnotice#wまでお知らせください。3codebox.com(メールを送信する際、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がとりつけば、本サイトは侵害された内容をすぐに削除します。)

おすすめ