【PHP】usort()関数内の引数について
【PHP】usort()関数内に出てくる関数の引数の意味を教えてください。
usort(ユーザー定義関数)
以下のような配列があります。ここで'score'を小さな順番(昇順)で並べ替えるためにusort()関数を使いたいと思います。
$data= [
['name' => 'yamada', 'score'=> 80],
['name' => 'suzuki', 'score'=> 60],
['name' => 'tanaka', 'score'=> 70],
['name' => 'okada', 'score'=> 60],
];
usort(
$data,
function($a, $b){
if ($a['score']=== $b['score']){
return 0;
}
return $a['score'] > $b['score'] ? 1: -1;
}
);
echo "<pre>";
print_r($data);
echo "</pre>";
-----------------------------------------------------------------
サンプルでは上記のように$a,$bが使用されています。
スコアの数値を比較して、あるスコアの値と別のスコアの値が同じであれば「0」を返す。$aの値が$bより大きければ「1」を返す、そうでなければ「-1」を返す。
返ってきた値、「-1」,「 0」,「 1」と小さな順に並べる…
こういうことかと思います。添付画像のように表示された値も合っています。
が、functionの引数($a, $b)の意味がよくわかりません。
foreachなどでループさせ値を一つづつ比較するというよう作業を行うのであればまだ理解できるかもしれませんが、ただ単に引数に function($a, $b)…としただけでscoreの値が$a、$bにどうやって代入されていくのでしょうか??
$a, $bと記述しただけで全てのscoreの値をなぜ比較してくれるのかわかりません。
また、現在$dataの中には4つしか配列がありません。-1,0,1だけで順番をつけられるでしょうが、これが50, 100個と配列データが増えた場合でもこのやり方でできるのでしょうか?
初学者です。分かる方いらっしゃいましたら教えて下さい。よろしくお願いいたします。
お礼
早速にご回答をいただき、有難うございます。 echo "<pre>"; print_r($data); echo "</pre>"; とすることで、きれいに表示されました。 また一つ新しいことを覚えました。 感謝いたします。