ソート

配列

配列(array)のソート機能

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


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

ソート関数の特性

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

一覧


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


ソート関数

 閲覧数:399 投稿日: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-16 → 11-22
順位 ページタイトル抜粋 アクセス数
1 ブラウザを閉じたらセッションデータはどうなるの? | セッション 8
2 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 5
3 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 4
3 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 4
4 PHPで定数を定義する方法は2種類ある / 配列定数の定義 3
4 インポートするデータを受信できませんでした。ファイル名が送信されていないか、ファイルサイズが PHP の設定で許可された最大値を超えています。FAQ 1.16 をご覧ください | エラーメッセージ 3
4 ブラウザを閉じたらセッションデータはどうなるの? | セッション 3
4 クラスの継承 | クラスとオブジェクト 3
5 curl で Cookie を使用する 2
5 例外処理 | 制御構造 2
5 Fatal error: Uncaught Error: Call to a member function modify() on string | Fatal error(エラーメッセージ) 2
5 関数定義内での「外部ファイル読込」 | 制御構造 2
5 set_error_handler | 例外処理(制御構造) 2
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined | Fatal error(エラーメッセージ) 2
5 コード例 … 「例外処理」はネストすることができる 2
5 PHP用語 2
5 register_shutdown_function | 関数処理 関数 2
6 クロージャ | 関数 1
6 session.cookie_lifetime / session.use_cookies | セッション 1
6 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 1
2024/11/23 1:01 更新