#usort関数について
自身で勉強していて、わかりにくかった部分であるusortに関して、まとめてみました。
公式php.net
から
usort ( array &$array , callable $callback )
と説明されています。
- &$array :入力する配列
- $callback: コールバック関数
要するに、第1引数で並び変えたい配列を渡し、第2引数で並び替える順番を定義した比較関数を入れるということです。
#使い方
- 今回使う配列
$data = [
['name' => 'taguchi', 'score' => 80],
['name' => 'kikuchi', 'score' => 60],
['name' => 'hayashi', 'score' => 70],
['name' => 'tamachi', 'score' => 60],
];
- 自らが定義した比較関数
function scores($a, $b) {
if($a['score'] === $b['score']) {
return 0;
}
return $a['score'] > $b['score'] ? 1 : -1;
}
比較関数で行っていること
-
比べるscoreを
$a, $b
に置き換える -
scoreが同じ場合、0を返す
-
$a
が$b
より大きい場合、1を小さい場合-1を返す。
よって0の場合は順番に影響はない1の場合、繰り上げ-1の場合、繰り下げられる。
- usort関数による呼び出しとprint_rによる表示
usort($data, 'scores'); //並び替えた関数の表示
print_r($data);
- 並び替える前の配列の結果表示
Array
[name] => taguchi
[score] => 80
[name] => kikuchi
[score] => 60
[name] => hayashi
[score] => 70
[name] => tamachi
[score] => 60
- 並び替えた後の配列の結果表示
Array
[name] => kikuchi
[score] => 60
[name] => tamachi
[score] => 60
[name] => hayashi
[score] => 70
[name] => taguchi
[score] => 80
#終わりに
usort関数とは、配列の中身を並び替えるというものだとわかりました。使い方は、()の中に並び替えたい配列とどのような順番かを定義した関数を入れるという簡単なものでした。