仙台広瀬川ワイルド系ワーキングマザー社長

ビールと温泉と面白いものが好きな46歳、高校生男子の母。

PHP:ある多次元配列を独自の並び順を持つある要素に基づいてソートするには

タイトルは何いってんだか伝わりにくいですが、例えば「メンバーを県の順に並べる」場合。

array('pref' => '秋田', 'name' => 'MUNAKATA')

これが一人のデータで、

array('青森','岩手','宮城','秋田','山形','福島')

県はこの順と決まっている。
県のidとかあるのが普通だけど、事情によりここは単なる県名のarray。


自分のPG能力の低さを晒してしまうのですが、どうやってソートしようか、すっごい悩んでしまいました。
やっぱりarray_multisort使うのかな、と。
結局書いたのがこれ。もっといい方法ないかな。

//県

$ar_pref = array('青森','岩手','宮城','秋田','山形','福島');
//個人
$ar_sub0 = array('pref' => '福島', 'name' => 'Okubo');
$ar_sub1 = array('pref' => '秋田', 'name' => 'MUNAKATA');
$ar_sub2 = array('pref' => '秋田', 'name' => 'Fujioka');
$ar_sub3 = array('pref' => '岩手', 'name' => 'Suzuki');
$ar_sub4 = array('pref' => '山形', 'name' => 'Takeda');
//メンバー
$ar_members = array($ar_sub0,$ar_sub1,$ar_sub2,$ar_sub3,$ar_sub4);

//

foreach ($ar_members as $key => $value ) {
$pref_keys[$key] = array_keys($ar_pref,$value['pref']);
}

array_multisort($pref_keys, $ar_members);

参考:http://www.php.net/manual/ja/function.array-multisort.php