PHP

sort関数


sort()

要素の値でソートを行う。

配列に元々あったキーは初期化されるためキーが元々から数値の配列に使うのがベスト。連想配列には向かないかと。

$array = ['apple', 'cherry', 'peach', 'banana'];

sort($array);
var_dump($array);
//array(4) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(6) "cherry" [3]=> string(5) "peach" }

※連想配列で用いた例

テストの点数を悪い順に並べる事ってそうないと思いますけど:sweat:

$array = ['math' => '70', 'science' => '90', 'history' => '10'];

sort($array);
var_dump($array);
//array(3) { [0]=> string(2) "10" [1]=> string(2) "70" [2]=> string(2) "90" }

Quits.png


asort()

sort関数ではソート時にキーが初期化されたが、asort関数は

ソートしてもキーと値の関係を保つことができる。

$array = ['math' => '70', 'science' => '90', 'history' => '10'];

asort($array)
var_dump($array);
//array(3) { ["history"]=> string(2) "10" ["math"]=> string(2) "70" ["science"]=> string(2) "90" }


ksort()

ksort関数はキーを基準に配列をソートする。

またキーと値の関係を保つことができる。

$array = ['lisa' => '420', 'clark' => '350', 'alex' => '480'];

ksort($array);
var_dump($array);
//array(3) { ["alex"]=> string(3) "480" ["clark"]=> string(3) "350" ["lisa"]=> string(3) "420" }

キーを基準とするため、連想配列の場合役に立つが通常の配列の場合、キーは元々0、1、2..と割り振られているため活用できる瞬間があまりないように思う。

$array = ['a', 'b', 'c'];

var_dump($array);
//array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
//ksort関数を使ったあともう一度var_dumpしてみる。
ksort($array);
var_dump($array);
//array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
//もとから0スタートの昇順キーが振られるため活用できていない。


降順

降順の場合sort関数系の's'の前に'r'をつけてあげる

つまり

sortの降順 = rsort

asortの降順 = arsort

ksortの降順 = krsort

となる 。