ハッシュの配列をユニークにするPerlモジュール作りました
はい、前回言ってたモジュール公開しました。
metacpan.org
CPAN Authorの登録や、minilコマンド使ってのモジュール公開など、
初めてでしたが比較的やりやすかったです^^
ただ何箇所か詰まった部分もあるので、そこはPerl入学式の方に聞いて助けてもらいました。ご協力ありがとうございました!
なお、「Hash::Uniqueという名前は空間名を占有しすぎ」というご指摘もいただいたので、次回からは気をつけたいと思います。
モジュール自体は、もともとPHPで作ってた関数をPerlに移植した形です。
連想配列(Perlではハッシュの配列)を、指定したキーで一意にするという関数です。
まあ、同じようなモジュールは既にCPANにありそうですね^^;
公開したモジュールのソースはCPANから見れるので、ここでは元となったphpのソースを載せておきます。
<?php function getUniqueAssociativeArray($arr, $key){ $tmp = array(); $resultArr = array(); foreach( $arr as $value ){ if(!in_array( $value[$key], $tmp)) { array_push($tmp, $value[$key]); array_push($resultArr, $value); } } return $resultArr; } $people = array( array('id' => 1, 'name' => '佐藤'), array('id' => 2, 'name' => '鈴木'), array('id' => 3, 'name' => '田中'), array('id' => 4, 'name' => '佐藤') ); $peopleUnique = getUniqueAssociativeArray($people, "name"); var_dump($peopleUnique); ?>
結果
array(3) { [0]=> array(2) { ["id"]=> int(1) ["name"]=> string(6) "佐藤" } [1]=> array(2) { ["id"]=> int(2) ["name"]=> string(6) "鈴木" } [2]=> array(2) { ["id"]=> int(3) ["name"]=> string(6) "田中" } }