配列を任意の順番に並び替えたいっ!!

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求人ナビ

PHP
スポンサーリンク
カトーの開発備忘録

コメント