sort
関数に備わっている標準的なソート順では表現できない順序をソートしたい場合、usort
関数を使ってソートすることが可能です。
役職や曜日、干支などはこのusort
関数で並べ替えます。
なお、usort
関数の引数はルールに沿って記載する必要があります。
- 引数は比較が必要な配列要素(2個)であること。
- 第1引数が第2引数よりも大きな場合は正数、小さな場合は負数、等しい場合は0を返す。
コード
// 単位を昇順に準備
key = [ '月', '火', '水', '木', '金', '土', '日' ];
// 並び替えたい配列weeks = [ '日', '火', '月', '金' ];
usort(weeks, function(a, b) use(key){
return array_search(a,key) <=> array_search(b,key);
});
上記例では引数$a
、$b
をキーにして、配列keyを検索し、登場位置で大証比較を行います。 また、比較結果を正数/負数/0として返すにはPHP7で追加された<=>(宇宙船演算子 -三方比較演算子-)
を使用すると便利です。
結果
print_r($weeks);
// Array (
// [0] => 月
// [1] => 火
// [2] => 金
// [3] => 日
//)
PHPで配列の中身を並べ替えるsort関数 - IT求人ナビ
コメント