php 配列のソートのサンプル

2011/05/17

ソートの基本は、数字・大文字・小文字・ひらがな・カタカナ。
数値と数字の混在は避ける。

値でソート(キーと値の相関関係を維持)

asort():昇順

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. asort($ary);
  3.  
  4. // asort($ary)の結果:昇順
  5. Array
  6. (
  7.   [1] => 500
  8.   [9] => 913
  9.   [5] => Abc
  10.   [7] => Bbc
  11.   [4] => abc
  12.   [6] => bbc
  13.   [2] => とまと
  14.   [0] => みかん
  15.   [3] => めろん
  16.   [8] => バナナ
  17. )

arsort():降順

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. arsort($ary);
  3.  
  4. // arsort($ary)の結果:降順
  5. Array
  6. (
  7.   [8] => バナナ
  8.   [3] => めろん
  9.   [0] => みかん
  10.   [2] => とまと
  11.   [6] => bbc
  12.   [4] => abc
  13.   [7] => Bbc
  14.   [5] => Abc
  15.   [9] => 913
  16.   [1] => 500
  17. )

natcasesort():大文字・小文字の区別なし:自然順

「自然順」って…要は「昇順」ってことだと思う。

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. natcasesort($ary);
  3.  
  4. // natcasesort($ary)の結果
  5. Array
  6. (
  7.   [1] => 500
  8.   [9] => 913
  9.   [5] => Abc
  10.   [4] => abc
  11.   [7] => Bbc
  12.   [6] => bbc
  13.   [2] => とまと
  14.   [0] => みかん
  15.   [3] => めろん
  16.   [8] => バナナ
  17. )

natsort():大文字・小文字の区別あり:自然順

「自然順」って…要は「昇順」ってことだと思う。

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. natsort($ary);
  3.  
  4. // natsort($ary)の結果
  5. Array
  6. (
  7.   [1] => 500
  8.   [9] => 913
  9.   [5] => Abc
  10.   [7] => Bbc
  11.   [4] => abc
  12.   [6] => bbc
  13.   [2] => とまと
  14.   [0] => みかん
  15.   [3] => めろん
  16.   [8] => バナナ
  17. )

値でソート(キーと値の相関関係をしない)

連想配列だったらキーは数値に置き換えられる

sort():数値添字配列:昇順

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. sort($ary);
  3.  
  4. // sort($ary)の結果:昇順
  5. Array
  6. (
  7.   [0] => 500
  8.   [1] => 913
  9.   [2] => Abc
  10.   [3] => Bbc
  11.   [4] => abc
  12.   [5] => bbc
  13.   [6] => とまと
  14.   [7] => みかん
  15.   [8] => めろん
  16.   [9] => バナナ
  17. )

sort():連想配列:昇順

  1. $ary = array("くだもの"=>"みかん", "やさい"=>"とまと", "おにく"=>"ひつじ");
  2. sort($ary);
  3.  
  4. // sort($ary)の結果:昇順
  5. Array
  6. (
  7.   [0] => とまと
  8.   [1] => ひつじ
  9.   [2] => みかん
  10. )

rsort():数値添字配列:降順

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. rsort($ary);
  3.  
  4. // rsort($ary)の結果:降順
  5. Array
  6. (
  7.   [0] => バナナ
  8.   [1] => めろん
  9.   [2] => みかん
  10.   [3] => とまと
  11.   [4] => bbc
  12.   [5] => abc
  13.   [6] => Bbc
  14.   [7] => Abc
  15.   [8] => 913
  16.   [9] => 500
  17. )

rsort():連想配列:降順

  1. $ary = array("くだもの"=>"みかん", "やさい"=>"とまと", "おにく"=>"ひつじ");
  2. rsort($ary);
  3.  
  4. // rsort($ary)の結果:降順
  5. Array
  6. (
  7.   [0] => みかん
  8.   [1] => ひつじ
  9.   [2] => とまと
  10. )

shuffle():数値添字配列:ランダム

  1. $ary = array("みかん", "500", "とまと", "めろん", "abc", "Abc", "bbc", "Bbc", "バナナ", "913");
  2. shuffle($ary);
  3.  
  4. // shuffle($ary)の結果:ランダム
  5. Array
  6. (
  7.   [0] => 500
  8.   [1] => みかん
  9.   [2] => Bbc
  10.   [3] => めろん
  11.   [4] => 913
  12.   [5] => とまと
  13.   [6] => bbc
  14.   [7] => abc
  15.   [8] => Abc
  16.   [9] => バナナ
  17. )

shuffle():連想配列:ランダム

  1. $ary = array("くだもの"=>"みかん", "やさい"=>"とまと", "おにく"=>"ひつじ");
  2. shuffle($ary);
  3.  
  4. // shuffle($ary)の結果:ランダム
  5. Array
  6. (
  7.   [0] => とまと
  8.   [1] => みかん
  9.   [2] => ひつじ
  10. )

キーでソート(キーと値の相関関係を維持)

ksort():昇順

  1. $ary = array("くだもの"=>"みかん", "やさい"=>"とまと", "おにく"=>"ひつじ");
  2. ksort($ary);
  3.  
  4. // ksort($ary)の結果:昇順
  5. Array
  6. (
  7.   [おにく] => ひつじ
  8.   [くだもの] => みかん
  9.   [やさい] => とまと
  10. )

krsort():降順

  1. $ary = array("くだもの"=>"みかん", "やさい"=>"とまと", "おにく"=>"ひつじ");
  2. krsort($ary);
  3.  
  4. // krsort($ary)の結果:降順
  5. Array
  6. (
  7.   [やさい] => とまと
  8.   [くだもの] => みかん
  9.   [おにく] => ひつじ
  10. )

ユーザー定義とかよくわかんないヤツら

uasort()、uksort()、usort()、array_multisort()
「array_multisort()」は多重配列のソートで使える。

php 多重配列のソート

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい