ソート

配列

配列(array)のソート機能

 状態:-  閲覧数:2,613  投稿日:2017-12-03  更新日:2017-12-06  
ソート関数
・「ソートのアルゴリズム」を分離したもの 
・すべて配列自身を直接変更する
・ソートした配列を新しく作って返すわけではない

「配列をソートする関数」の分類


A.ソートの基準(どこをソートするか)。$array['キー'] = '値';
・配列のキー
・配列の値

B.キーと値の相関関係


キーと値の相関関係を、ソート後にも維持するか
・維持。例[3][1][2]→[1][2][3]
・維持しない。維持しないものは、ソート後にキーを (0,1,2 ... と)振り直す。例[3][1][2]→[0][1][2]

C.ソート順


アルファベット順、 昇順、降順、数値順、自然順、ランダム、ユーザ定義順

ソート関数の特性

 閲覧数:540 投稿日:2017-12-07 更新日:2017-12-20 

一覧


k
関数名 ソート基準 キーと値の相関関係 ソート順
array_multisort 値 連想配列の場合は維持し、数値添字配列の場合は維持しない 最初の配列、あるいはソートオプション
asort 値 維持 昇順
arsort 値 維持 降順
ksort キー 維持 昇順
krsort キー 維持 降順
natcasesort 値 維持 大文字小文字を区別しない自然順
natsort 値 維持 自然順
sort 値 維持しない 昇順
rsort 値 維持しない 降順
shuffle 値 維持しない ランダム
uasort 値 維持 ユーザ定義
uksort キー 維持 ユーザ定義
usort 値 維持しない ユーザ定義


ソート関数

 閲覧数:567 投稿日:2017-12-21 更新日:2018-01-08 

sort()


配列の値を、単純にソート
・キーは、再割り当てられる。例[3][1][2]→[0][1][2]
・単純に値だけをソートしたい場合は、asortよりも、sortを使う方が良い。※処理の速さが違うため

usort()


ユーザー定義の比較関数を使用して、配列を値でソート
・並べ換え対象である配列から、何らかの方法で2つの要素を取り出し、ユーザ定義関数へ渡す

ユーザ定義関数
・2つの要素の大小関係によって-1, 0, 1のいずれかを返し、その結果によって、usort()の内部処理で並べ換えるかどうか判断を行なう
・2つを比較して、その大小と等しいか?だけが分かればソートできる
・数値のソートの他に、文字列、場合によっては配列の比較やオブジェクトの比較でさえも、比較関数さえ用意できればソートできるように設計されている

昇順・降順の特性
- 第1引数 不等号 第2引数 返り値 ユーザー定義関数内での不等号比較例 strcmp
昇順 大 > 小 1 ($a > $b) ? 1 : -1; strcmp($a,$b);
昇順 小 < 大 -1 ($a < $b) ? -1 : 1; strcmp($a,$b);
降順 大 > 小 1 ($a < $b) ? 1 : -1; strcmp($b,$a);
降順 小 < 大 -1 ($a > $b) ? -1 : 1; strcmp($b,$a);



配列演算子

コメント投稿(ログインが必要)