- ベストアンサー
配列の順番により別の配列を並び替える方法
- PHPの配列を特定の順番で並び替える方法についてご質問いただきました。
- 配列の要素を特定の値でソートする場合、usort関数を使用することができます。
- 部分一致もしくは前方一致でソートさせる場合は、usort関数のコールバック関数内で比較ロジックを実装する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じですかね <?PHP $kens=array( array('pref' => '福島県', 'id' => 'fukushima') ,array('pref' => '東京都', 'id' => 'chiyodaku') ,array('pref' => '秋田県', 'id' => 'noshiro') ,array('pref' => '秋田県', 'id' => 'akita') ,array('pref' => '岩手県', 'id' => 'morioka') ,array('pref' => '山形県', 'id' => 'yamagata') ); print "<pre>"; print_r($kens); print "</pre>"; usort($kens,"mysort"); print "<pre>"; print_r($kens); print "</pre>"; function get_key($str){ $arr_pref = array('青森','岩手','宮城','秋田','山形','福島'); foreach($arr_pref as $key=>$val){ if(strpos($str,$val)!==false) return $key; } return count($arr_pref); } function mysort($a,$b){ $pref1=get_key($a["pref"]); $pref2=get_key($b["pref"]); if($pref1==$pref2) return 0; return $pref1 > $pref2; } ?>
お礼
早速のご回答ありがとうございます。 希望していた並び順になりました。 文字列としてマッチングさせるんですね。 大変参考になりました。