jiichan.com

PROGRAMMING

PHP
javascript
CSS
Java

テキストファイルの重複行を単一化

テキストファイルを扱っていると、重複した行をひとつだけにしたい時があります。
phpには文字列操作や配列操作など多くの関数が準備されているので、配列操作関数のひとつである array_unique関数を使って、テキストファイルの重複した行を単一化します。

array_unique関数で配列を単一化

重複した行のあるテキストファイル

"01","北海道"
"01","北海道"
"01","北海道"
"02","青森県"
"02","青森県"
"03","岩手県"
"03","岩手県"
"03","岩手県"
"03","岩手県"
"04","宮城県"
"04","宮城県"
"04","宮城県"
"05","秋田県"
"05","秋田県"
"06","山形県"
"06","山形県"
"06","山形県"
"07","福島県"
"07","福島県"
"07","福島県"

上の重複したテキストファイル全体ををfile()で配列に取得し、2行目のarray_unique()で単一化。
あとは通常のファイル処理で完了。

$aryData = file("重複行テキスト.txt");
$aryUnique = array_unique($aryData);
// 書き込みモードでオープン
$fp = fopen("単一化テキスト", "w");
flock($fp, LOCK_EX);
foreach($aryUnique as $value){
	//ファイルに保存
	fputs($fp, $value);
}	
flock($fp,LOCK_UN);
// ファイルを閉じる
fclose($fp);

結果は次のとおり、単一化されていました。

"01","北海道"
"02","青森県"
"03","岩手県"
"04","宮城県"
"05","秋田県"
"06","山形県"
"07","福島県"

よく使うのでコピペ用に載せておきました。