トップページ
Laravel学習サイトLaravelやるばい

目次

PHPのusortと比較関数が何かと簡単なサンプルコード で解説

みなさんこんにちは、あべ いさぢです。

今回はPHPのusortと比較関数が何かと簡単なサンプルコードで解説します。


usortとは

配列を自分で決めたルールで並び替える関数です。

並び替えのルールとなる関数を自作できるので便利です。

基本形は下記です。

usort(array $array, callable $callback)

「$array」は並び替えの対象となる配列で「$callback」は並び替えのルールとなる関数です。
サンプルコードで考えます。


サンプルコード

数値を小さい順に並び替える場合を考えます。

$numbers = [3, 1, 4, 2];

usort($numbers, function($a, $b) {
    return $a - $b;
});

print_r($numbers);

配列の要素を「$a - $b」を使って並び替えます。

並び替え方は下記です。

出力結果は下記になります。

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

「return $a - $b」の時は小さい順に並べます。

もし「return $b - $a」になったら大きい順に並べます。

オブジェクト配列の並び順を変える時を考えます。

$users = [
    ["name" => "Taro", "age" => 30],
    ["name" => "Hanako", "age" => 20],
    ["name" => "Jiro", "age" => 25]
];

usort($users, function($a, $b) {
    return $a["age"] - $b["age"];
});

print_r($users);

keyに該当するvalueの値で並び替えることもできます。

出力結果は下記になります。

(
    [0] => Array ( [name] => Hanako [age] => 20 )
    [1] => Array ( [name] => Jiro [age] => 25 )
    [2] => Array ( [name] => Taro [age] => 30 )
)



 比較関数とは

サンプルコードでも登場しましたが「function($a, $b)」に対して「return $a - $b」の時は小さい順に並べて「return $b -$a」の時は大きい順に並べます。

ルールなので覚えないといけないです。

デメリットもあります。

数値に対してしか使うことができません。

文字数・日付などで使う時は宇宙船演算子を使えばいいです。

戻る