配列(array)のソート機能
状態:-
閲覧数:1,664
投稿日:2017-12-03
更新日:2017-12-06
ソート関数
・「ソートのアルゴリズム」を分離したもの
・すべて配列自身を直接変更する
・ソートした配列を新しく作って返すわけではない
A.ソートの基準(どこをソートするか)。$array['キー'] = '値';
・配列のキー
・配列の値
キーと値の相関関係を、ソート後にも維持するか
・維持。例[3][1][2]→[1][2][3]
・維持しない。維持しないものは、ソート後にキーを (0,1,2 ... と)振り直す。例[3][1][2]→[0][1][2]
アルファベット順、 昇順、降順、数値順、自然順、ランダム、ユーザ定義順
・「ソートのアルゴリズム」を分離したもの
・すべて配列自身を直接変更する
・ソートした配列を新しく作って返すわけではない
「配列をソートする関数」の分類
A.ソートの基準(どこをソートするか)。$array['キー'] = '値';
・配列のキー
・配列の値
B.キーと値の相関関係
キーと値の相関関係を、ソート後にも維持するか
・維持。例[3][1][2]→[1][2][3]
・維持しない。維持しないものは、ソート後にキーを (0,1,2 ... と)振り直す。例[3][1][2]→[0][1][2]
C.ソート順
アルファベット順、 昇順、降順、数値順、自然順、ランダム、ユーザ定義順
ソート関数の特性
一覧
k
関数名 | ソート基準 | キーと値の相関関係 | ソート順 |
---|---|---|---|
array_multisort | 値 | 連想配列の場合は維持し、数値添字配列の場合は維持しない | 最初の配列、あるいはソートオプション |
asort | 値 | 維持 | 昇順 |
arsort | 値 | 維持 | 降順 |
ksort | キー | 維持 | 昇順 |
krsort | キー | 維持 | 降順 |
natcasesort | 値 | 維持 | 大文字小文字を区別しない自然順 |
natsort | 値 | 維持 | 自然順 |
sort | 値 | 維持しない | 昇順 |
rsort | 値 | 維持しない | 降順 |
shuffle | 値 | 維持しない | ランダム |
uasort | 値 | 維持 | ユーザ定義 |
uksort | キー | 維持 | ユーザ定義 |
usort | 値 | 維持しない | ユーザ定義 |
ソート関数
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); |
Twitter検索結果。「ソート」に関する最新ツイート
YG의 자지들ソート https://t.co/QnomydOUAi 2023/06/04 20:15
あと「120にしたらレベルソートだとエとギの間に入ることになるのかな〜……🫤」と思ってたんですけど全然そんなことはなかった
空気を読んだ男snsk、メソポタコンビを尻目に先頭に立つ男snsk──。 https://t.co/P3O0gCjjjd 2023/06/04 20:10

@Sho25600915 字幕や吹き替えの指定言語でソートできるようになって欲しいです🥹 2023/06/04 20:09
炎のチェインこの人しかないんよなぁ。。
魔法は誰だったか全然覚えてないし😵💫
チェイン所持キャラでソートしたいよォ!
。・゚ ꜀( ꜆>ᯅ<)꜆゚・。 https://t.co/43upkAY2sV 2023/06/04 20:00

ポケモンhome内でソートするより
剣盾がソートしやすい 2023/06/04 19:50
@maaaaaam222 本当だ!笑
好きな系統一緒なんかな一瞬自分のソートかと思った😂😂😂 2023/06/04 19:19
「魔法使いの約束」のキャラソート(画像付き) https://t.co/jQdv5WViOn 2023/06/04 19:11
レオパ棚…これまで迎えた順に並べてたけど、数も増えてきたからモルフの系統とか雌雄でソートしたいな…🤔 2023/06/04 19:01
ナイターの為にPayPay下さい、王子のソートで買いたいです、乗らせて下さい https://t.co/WSMKrQzTGX 2023/06/04 18:51
ライフハックほど大袈裟でもないんだけどビジネスソックスって複数種類あるとペアにするの大変
でもいったん全部大きさでソートしてからならペアにしやすいですよ https://t.co/xhwWYlH4uh 2023/06/04 18:46
