ソート

配列

配列(array)のソート機能

 状態:-  閲覧数:2,497  投稿日: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.ソート順


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

ソート関数の特性

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

一覧


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


ソート関数

 閲覧数:530 投稿日: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);



配列演算子

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



週間人気ページランキング / 11-23 → 11-29
順位 ページタイトル抜粋 アクセス数
1 PHPで定数を定義する方法は2種類ある / 配列定数の定義 6
1 ブラウザを閉じたらセッションデータはどうなるの? | セッション 6
2 PHP用語 5
3 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 4
3 No route found fo | エラーメッセージ 4
3 Fatal error: Uncaught Error: Call to a member function modify() on string | Fatal error(エラーメッセージ) 4
3 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 4
4 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in ○○.php on line △△ | Warning(エラーメッセージ) 3
4 「POSIX正規表現」と「PCRE正規表現」の違い 3
4 クロージャ | 関数 3
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'カラム名' cannot be null | Fatal error(エラーメッセージ) 2
5 Parse error: syntax error, unexpected T_DECLARE, expecting T_STRING in ○○ on lin | Parse error(エラーメッセージ) 2
5 Parse error: syntax error, unexpected T_REQUIRE_ONCE, expecting T_FUNCTION | Parse error(エラーメッセージ) 2
5 エラー | 例外処理(制御構造) 2
5 Fatal error: Uncaught Dotenv\Exception\InvalidFileException: Dotenv values containing spaces must be surrounded by quotes. | Fatal error(エラーメッセージ) 2
5 Fatal error: Call-time pass-by-reference has been removed in ★★.php on line △△ | 削除された機能 2
5 Fatal error: require_once(): Failed opening required 'PEAR.php' | Fatal error(エラーメッセージ) 2
5 Warning: include() [function.include]: Failed opening '**.php' for inclusion (in | Warning(エラーメッセージ) 2
5 セッションIDを(共有するために)受渡す方法は3種類ある / 方法A.Cookieへ書き込んで渡す / 方法B.URLパラメータとして付与 / 方法C.hiddenで送信 2
5 register_shutdown_function | 関数処理 関数 2
2025/11/30 1:01 更新