こんにちは!
近所のいつものカフェでご満悦してるちょこひです。
今日突然暑くなった!
朝からルンルンで洗濯回せるのはいいけども
暑いのだいっきらいなんでやめてほしい!
今日はPHPのsort関数について書きます。
夏休み明けたらすぐ定期テストがあるため最近重い腰を上げて
ようやっと勉強し始めたんですが
昨日見事にソート関連でハマりました。
ググりにググりまくり
友達に確認してなんとかなったので
書き留めておきます。
さて、sort関数の話をする前にソートされるものを用意しましょう。
今回は2つ用意します。
$arrayはよくみる配列です。
Javaと同じように、0から順にインデックスが振られます。
要素数3つの配列です。
$dictは「連想配列」です。要素とキーがセットになったもの。
Swiftでは辞書って呼ばれるものです。
では、ソート関数のお話。
PHPには、いろんなソート関数が用意されています。
・sort
・rsort
・ksort
・krsort
・asort
・arsort
今回はこれらの整理です。
まずは普通の配列をソートする場合についてまとめます。
実行結果が以下です。
sort関数は、要素を昇順でソートし、インデックスを振りなおします。
戻り値はboolean。成功時にtrue、失敗時にfalseが入ります。
ここでは$resultにはtrueが入っています。
では、rsort関数は
rsort関数は、要素を降順でソートし、インデックスを振り直します。
sort関数同様、戻り値はbooleanです。
続いてksort関数。
ksortのkは、「key」の略です。キーを昇順に並べ替えて配列を作成します。
ここではkeyは自動で振られたインデックス順なので、実行前と結果が変わりません。
ここまでくればわかるかと思いますが、
krsortは
実行結果は
では、asort。
実行結果は
asortはsortと違い、
キーと値のセットを維持したまま要素の昇順で並べ替えます。
asortは連想配列でやると違いがよくわかるので、連想配列で同じことをしてみます。
では、連想配列で同じことをしてみます。
まずはsortから。
実行結果
キーがどっかいきました。
同じように、ksortでも試してみましょう。
実行結果は
では、asortは
実行結果は
キーと値を維持したまま、要素の昇順で再度インデックスが振られています。
連想配列を要素の昇順/降順でソートしたい時、
sort / rsort関数を使ってしまうとキーが失われてしまいます。
困っちゃう。
そんな時に一役買うのがasort / arsort関数ってな感じです。
エラい硬くなりましたが、こんな感じ。
最初普通にsort関数を使ってキーがどっかいっちゃって、
Σ(゚д゚;) こうなってました。
にしてもややこしいなあ!
PHPはややこしいです。
Javaのありがたみをかみしめながら引き続き勉強します!
ちょこひ
近所のいつものカフェでご満悦してるちょこひです。
今日突然暑くなった!
朝からルンルンで洗濯回せるのはいいけども
暑いのだいっきらいなんでやめてほしい!
アカン
今日はPHPのsort関数について書きます。
夏休み明けたらすぐ定期テストがあるため最近重い腰を上げて
ようやっと勉強し始めたんですが
昨日見事にソート関連でハマりました。
ググりにググりまくり
友達に確認してなんとかなったので
書き留めておきます。
今日使うもの
さて、sort関数の話をする前にソートされるものを用意しましょう。
今回は2つ用意します。
$array = array('かきくけこ', 'さしすせそ', 'あいうえお'); $dict = array('chocolate' => 'チョコレート', 'apple' => 'リンゴ', 'banana' => 'バナナ');
$arrayはよくみる配列です。
Javaと同じように、0から順にインデックスが振られます。
要素数3つの配列です。
$dictは「連想配列」です。要素とキーがセットになったもの。
Swiftでは辞書って呼ばれるものです。
では、ソート関数のお話。
PHPには、いろんなソート関数が用意されています。
・sort
・rsort
・ksort
・krsort
・asort
・arsort
今回はこれらの整理です。
普通の配列の場合
まずは普通の配列をソートする場合についてまとめます。
$array = array('かきくけこ', 'さしすせそ', 'あいうえお'); $result = sort($array); print_r($array);
実行結果が以下です。
Array ( [0] => あいうえお [1] => かきくけこ [2] => さしすせそ )
sort関数は、要素を昇順でソートし、インデックスを振りなおします。
戻り値はboolean。成功時にtrue、失敗時にfalseが入ります。
ここでは$resultにはtrueが入っています。
では、rsort関数は
$array = array('かきくけこ', 'さしすせそ', 'あいうえお'); $result = rsort($array); print_r($array);実行結果が以下です。
Array ( [0] => さしすせそ [1] => かきくけこ [2] => あいうえお )
rsort関数は、要素を降順でソートし、インデックスを振り直します。
sort関数同様、戻り値はbooleanです。
続いてksort関数。
$array = array('かきくけこ', 'さしすせそ', 'あいうえお'); $result = ksort($array); print_r($array);実行結果が以下です。
Array ( [0] => かきくけこ [1] => さしすせそ [2] => あいうえお )
ksortのkは、「key」の略です。キーを昇順に並べ替えて配列を作成します。
ここではkeyは自動で振られたインデックス順なので、実行前と結果が変わりません。
ここまでくればわかるかと思いますが、
krsortは
$array = array('かきくけこ', 'さしすせそ', 'あいうえお'); $result = krsort($array); print_r($array);
実行結果は
Array ( [2] => あいうえお [1] => さしすせそ [0] => かきくけこ )こうなります。
では、asort。
$array = array('かきくけこ', 'さしすせそ', 'あいうえお'); $result = asort($array); print_r($array);
実行結果は
Array ( [2] => あいうえお [0] => かきくけこ [1] => さしすせそ )
asortはsortと違い、
キーと値のセットを維持したまま要素の昇順で並べ替えます。
asortは連想配列でやると違いがよくわかるので、連想配列で同じことをしてみます。
連想配列の場合
では、連想配列で同じことをしてみます。
まずはsortから。
$dict = array('chocolate' => 'チョコレート', 'apple' => 'リンゴ', 'banana' => 'バナナ'); $result = sort($dict); print_r($dict);
実行結果
Array ( [0] => チョコレート [1] => バナナ [2] => リンゴ )
キーがどっかいきました。
同じように、ksortでも試してみましょう。
$dict = array('chocolate' => 'チョコレート', 'apple' => 'リンゴ', 'banana' => 'バナナ'); $result = ksort($dict); print_r($dict);
実行結果は
Array ( [apple] => リンゴ [banana] => バナナ [chocolate] => チョコレート )キーと値の関係を維持しながらキーの昇順に並べ替えられ、再度インデックスが追加されています。
では、asortは
$dict = array('chocolate' => 'チョコレート', 'apple' => 'リンゴ', 'banana' => 'バナナ'); $result = asort($dict); print_r($dict);
実行結果は
Array ( [chocolate] => チョコレート [banana] => バナナ [apple] => リンゴ )
キーと値を維持したまま、要素の昇順で再度インデックスが振られています。
連想配列を要素の昇順/降順でソートしたい時、
sort / rsort関数を使ってしまうとキーが失われてしまいます。
困っちゃう。
そんな時に一役買うのがasort / arsort関数ってな感じです。
まとめ
エラい硬くなりましたが、こんな感じ。
最初普通にsort関数を使ってキーがどっかいっちゃって、
Σ(゚д゚;) こうなってました。
にしてもややこしいなあ!
PHPはややこしいです。
Javaのありがたみをかみしめながら引き続き勉強します!
ちょこひ