【PHP】League/CSVを使ってCSVファイルの任意のカラムの重複したデータを削除する方法

【PHP】League/Csvを使ってCSVファイルの任意のカラムの重複したデータを削除する方法です。

先日、CSVファイルの任意のカラムの重複したデータを削除する方法という記事を書きましたが、League/CSVというライブラリを使えばもっとコードがシンプルになります。

ソースコードは以下のとおりです。

※League/CSVはコンポーザーでインストールしています。

<?php
require_once 'vendor/autoload.php';
use League\Csv\Reader;
$str = <<<EOF
john,doe,1
jane,doe,2
foo,bar,3
EOF;
$reader = Reader::createFromString($str);
/**
* 重複データ削除
*
* @param $iterator
* @param int $offsetIndex 重複データを削除したい列を指定
* @return Generator
*/
function deduplicate($iterator, $offsetIndex=0)
{
foreach ($iterator as $row) {
yield $row[$offsetIndex] => implode(",", $row);
}
}
$result = iterator_to_array(deduplicate($reader, 1));
print_r($result);

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.