配列のソート
PHP配列のソートをおこなう方法を解説します。データの並び替えなどをおこなう際に使う配列のソート方法がわかります。
一次元配列
一次元配列のソートをおこないます。ソートの種類は、ソート順・キーの維持・値もしくはキーでソートなどいろいろなソートをおこなうことができます。
値の昇順・キーを維持しない
- PHP
- COPY
sort($array, SORT_REGULAR);
配列の値を昇順でソートします。キーを維持しないというのは、キーと値の関係をソート後も維持せずに新たにキーを割り振るという意味です。なのでキーを維持しないソートは主に数字添字配列に利用し、連想配列では使用しません。
sort()関数の引数は1番目がソートする配列、2番目がオプションです。オプションは以下のとおりです。
- SORT_REGULAR
- 通常の比較
- SORT_NUMERIC
- 数値として比較
- SORT_STRING
- 文字列として比較
- SORT_NATURAL
- 文字列として比較(自然順)
- SORT_LOCALE_STRING
- ロケールに基づいて比較
- SORT_FLAG_CASE
- 大文字と小文字を区別せずに比較。SORT_STRINGやSORT_NATURALと組み合わせて使用。
値の降順・キーを維持しない
- PHP
- COPY
rsort($array, SORT_REGULAR);
配列の値を降順でソートします。sort()関数と同様にキーを維持しないため、主に数字添字配列に使用されます。引数もsort()関数と同様です。
値の昇順・キーを維持する
- PHP
- COPY
asort($array, SORT_REGULAR);
配列の値を昇順でソートし、ソート後もキーと値の関係を維持します。主に連想配列のソートで使われます。引数はsort()関数と同様です。
値の降順・キーを維持する
- PHP
- COPY
arsort($array, SORT_REGULAR);
配列の値を降順でソートし、ソート後もキーと値の関係を維持します。主に連想配列のソートで使われます。引数はsort()関数と同様です。
キーの昇順・キーを維持する
- PHP
- COPY
ksort($array, SORT_REGULAR);
配列のキーを昇順でソートします。数字添字配列では意味がないので、基本的に連想配列のソートで使われます。引数はsort()関数と同様です。
キーの降順・キーを維持する
- PHP
- COPY
krsort($array, SORT_REGULAR);
配列のキーを降順でソートします。基本的に連想配列のソートで使われます。引数はsort()関数と同様です。
多次元配列
- PHP
- COPY
foreach($array as $key => $value){
$sort[$key] = $value['sortkey'];
}
array_multisort($sort, SORT_ASC, $array);
多次元配列のソートをおこなう場合、まず配列のソートする値をソート用配列に格納します。次にarray_multisort関数を使ってソートをおこないます。array_multisortは数字添字配列の場合はキーを振り直し、連想配列の場合はキーを維持してソートが行われます。
array_multisort関数の引数には1番目にソート用配列、2番目にソート順(SORT_ASC:昇順、SORT_DESC:降順)、3番目にソートする多次元配列を指定します。
多次元配列のソートをよくおこなう場合には関数化しておくと便利です。
- PHP
- COPY
funtion array_sort($array, $order, $sortkey){
foreach($array as $key => $value){
$sort[$key] = $value[$sortkey];
}
if(array_multisort($sort, $order, $array)){
return $array;
}
return false;
}