Think Simple Enjoy Life

PHPで連想配列をソートする

表題の通り。 PHP(というかほとんどのプログラミング言語でそうだと思うが)、漢字でのソーティングは難しい。 そこで、あらかじめ読み型フィールドを連想配列に追加しておき、よみ型でソートする。

以下は、読み仮名を追加して連想配列を追加した際の覚書。

<?php
$supervisors = array(
    array(
        "name" => "武井",
        "yomi" => "たけい",
        "supervisor" => "takei",
    ), 
    array(
        "name" => "田中",
        "yomi" => "たなか",
        "supervisor" => "tanaka",
    ), 
    array(
        "name" => "浅井",
        "yomi" => "あさい",
        "supervisor" => "asai",
    ), 
    array(
        "name" => "馬瀬",
        "yomi" => "ませ",
        "supervisor" => "mase",
    ), 
);

// まずはソート用の配列を下準備。
$sorted\_supervisors = array();
foreach ($supervisors as $v) $sorted\_supervisors\[\] = $v\['yomi'\];
print\_r($supervisors);

// SORT\_STRINGでソートルールを指定して、ソーティング
array\_multisort($sorted\_supervisors, SORT\_ASC, SORT\_STRING, $supervisors);
print\_r($supervisors);
?>