トップへ(mam-mam.net/)

PHPで配列、連想配列の並び替え(ソート) ~サンプルソースコード

検索:

PHPで配列、連想配列の並び替え(ソート) ~サンプルソースコード

PHPで配列をソートするには以下関数を使う方法があります。

関数名 基準
sort(配列) 昇順
rsort(配列) 降順
asort(連想配列) 昇順
arsort(連想配列) 降順
ksort(連想配列) キー 昇順
krsort(連想配列) キー 降順
shuffle(配列) ランダム
natsort(連想配列) 自然順アルゴリズム(※1)
natcasesort(連想配列) 大文字小文字を区別しない
自然順アルゴリズム(※1)
逆順配列 = array_reverse(配列 又は 連想配列) - 配列を逆順に並べ替えて返します
入れ替え配列 = array_flip(配列 又は 連想配列) - 配列のキーと値を入れ替える
array_values(配列 又は 連想配列) - 配列の全ての値を返す
array_keys(配列 又は 連想配列) - 配列のキーすべて、あるいはその一部を返す

※1.人間が行うのと同じ方法で数値を含む文字列を並べ替え

各ソートで使用するフラグ
SORT_REGULAR
通常通りに項目を比較
SORT_NUMERIC
数値として項目を比較
SORT_STRING
文字列として項目を比較
SORT_LOCALE_STRING
現在のロケールに基づき文字列として項目を比較(ロケールは、setlocale() 関数で変更可能)
SORT_NATURAL
natsort()と同様「自然アルゴリズム」で文字列として比較
SORT_FLAG_CASE
SORT_STRING や SORT_NATURAL とORで組み合わせて使い、 文字列のソートで大文字小文字を区別しない

sort( 配列, フラグ = SORT_REGULAR )

配列の値を昇順でソートします。

$a=[2, 1, 3, [5,4,6] ];
var_export($a);
sort($a);
var_export($a);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

array (
  0 => 1,
  1 => 2,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

連想配列はキーが削除されて配列になる

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
sort($c);
var_export($c);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  0 => 0,
  1 => 1,
  2 => 2,
  3 => 3,
  4 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

rsort( 配列, フラグ = SORT_REGULAR )

$a=[2, 1, 3, [5,4,6] ];
var_export($a);
rsort($a);
var_export($a);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

array (
  0 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  1 => 3,
  2 => 2,
  3 => 1,
)

連想配列はキーが削除されて配列になる

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
rsort($c);
var_export($c);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  0 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  1 => 3,
  2 => 2,
  3 => 1,
  4 => 0,
)

asort( 連想配列, フラグ = SORT_REGULAR )

連想配列の値を昇順でソートします。

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
asort($c);
var_export($c);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  'e' => 0,
  'a' => 1,
  'b' => 2,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

配列をasortでソートすると添え字の順序も変わる

$a=[2, 1, 3, [5,4,6] ];
var_export($a);
asort($a);
var_export($a);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

array (
  1 => 1,
  0 => 2,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

arsort( 連想配列, フラグ = SORT_REGULAR )

連想配列の値を降順でソートします。

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
arsort($c);
var_export($c);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'c' => 3,
  'b' => 2,
  'a' => 1,
  'e' => 0,
)

配列をasortでソートすると添え字の順序も変わる

$a=[2, 1, 3, [5,4,6] ];
var_export($a);
arsort($a);
var_export($a);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

array (
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  2 => 3,
  0 => 2,
  1 => 1,
)

ksort( 連想配列, フラグ = SORT_REGULAR )

連想配列のキーを昇順でソートします。

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
ksort($c);
var_export($c);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  'a' => 1,
  'b' => 2,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

krsort( 連想配列, フラグ = SORT_REGULAR )

連想配列のキーを降順でソートします。

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
krsort($c);
var_export($c);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  'e' => 0,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'c' => 3,
  'b' => 2,
  'a' => 1,
)

shuffle( 配列 )

配列をランダムにシャッフルします。

$a=[2, 1, 3, [5,4,6] ];
var_export($a);
shuffle($a);
var_export($a);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

array (
  0 => 2,
  1 => 3,
  2 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  3 => 1,
)

natsort(連想配列)

自然順アルゴリズムで値を昇順にソートします。

$a=["a"=>"img11.png", "b"=>"IMG2.png", "c"=>"img10.png", "d"=>"IMG1.png", "e"=>"img2.png", "f"=>"img1.png" ];
var_export($a);
natsort($a);
var_export($a);
array (
  'a' => 'img11.png',
  'b' => 'IMG2.png',
  'c' => 'img10.png',
  'd' => 'IMG1.png',
  'e' => 'img2.png',
  'f' => 'img1.png',
)

array (
  'd' => 'IMG1.png',
  'b' => 'IMG2.png',
  'f' => 'img1.png',
  'e' => 'img2.png',
  'c' => 'img10.png',
  'a' => 'img11.png',
)

natcasesort(連想配列)

大文字小文字を区分せずに自然順アルゴリズムで値を昇順にソートします。

$a=["a"=>"img11.png", "b"=>"IMG2.png", "c"=>"img10.png", "d"=>"IMG1.png", "e"=>"img2.png", "f"=>"img1.png" ];
var_export($a);
natcasesort($a);
var_export($a);
array (
  'a' => 'img11.png',
  'b' => 'IMG2.png',
  'c' => 'img10.png',
  'd' => 'IMG1.png',
  'e' => 'img2.png',
  'f' => 'img1.png',
)

array (
  'd' => 'IMG1.png',
  'f' => 'img1.png',
  'b' => 'IMG2.png',
  'e' => 'img2.png',
  'c' => 'img10.png',
  'a' => 'img11.png',
)

逆順配列 = array_reverse(配列 又は 連想配列)

要素の順番を逆順にした配列を返す

配列の場合

$a=[2, 1, 3, [5,4,6] ];
var_export($a);
$r=array_reverse($a);
var_export($r);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
)

array (
  0 =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  1 => 3,
  2 => 1,
  3 => 2,
)

連想配列の場合はキーも値も逆順になる

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>[5,4,6], "e"=>0];
var_export($c);
$r=array_reverse($c);
var_export($r);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'e' => 0,
)

array (
  'e' => 0,
  'd' =>
  array (
    0 => 5,
    1 => 4,
    2 => 6,
  ),
  'c' => 3,
  'a' => 1,
  'b' => 2,
)

入れ替え配列 = array_flip(配列 又は 連想配列)

キーと値を入れ替えた配列を返す

配列の場合

$a=[2, 1, 3, 5, 4, 6 ];
var_export($a);
$r=array_flip($a);
var_export($r);
array (
  0 => 2,
  1 => 1,
  2 => 3,
  3 => 5,
  4 => 4,
  5 => 6,
)

array (
  2 => 0,
  1 => 1,
  3 => 2,
  5 => 3,
  4 => 4,
  6 => 5,
)

連想配列の場合

$c=["b"=>2, "a"=>1, "c"=>3, "d"=>4, "e"=>0];
var_export($c);
$r=array_flip($c);
var_export($r);
array (
  'b' => 2,
  'a' => 1,
  'c' => 3,
  'd' => 4,
  'e' => 0,
)

array (
  2 => 'b',
  1 => 'a',
  3 => 'c',
  4 => 'd',
  0 => 'e',
)

PHPサンプル集一覧へ