- ベストアンサー
【PHP】usort()関数内の引数について
- usort()関数内で使用される引数$a, $bの意味について教えてください。
- 引数$a, $bはusort()関数によって自動的に代入されるスコアの値です。
- usort()関数は引数$a, $bを比較して配列を小さな順に並べ替えます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
usort() の第2引数の function($a, $b){} は無名関数です。 本来であれば ========== function hoge ($a, $b){ if ($a['score']=== $b['score']) { return 0; } elseif ($a['score'] > $b['score']) { return 1; } else { return -1; } } usort($data, "hoge"); ========== と書くべき所を関数定義を省略しています。 usort() は第2引数で指定された関数に対し、第1引数で指定された配列のn番目の値とn+1番目の値を引数として渡してくれます。 なので、その値を受け取るために function($a, $b) と定義しています。 別に function($hoge, $fuga) でも構いません。 定義した関数の第1引数に配列のn番目、第2引数に配列n+1番目の値が入ってくるので、それを比較して順番を決めます。
その他の回答 (1)
- asciiz
- ベストアンサー率70% (6809/9681)
>functionの引数($a, $b)の意味がよくわかりません。 ここには「2要素を比較するためのユーザー関数」を書いています。 別に$a, $b でなくでも $x,$y、あるいは$x1,$x2 と書いても構いません。(もちろんその後の比較式をその変数で書かないといけません) さて、usort()関数に4要素の配列を投げると、usort関数は、 function(要素1, 要素2) を呼び出して大小を知る function(要素1, 要素3) を呼び出して大小を知る function(要素1, 要素4) を呼び出して大小を知る function(要素2, 要素3) を呼び出して大小を知る function(要素2, 要素4) を呼び出して大小を知る function(要素3, 要素4) を呼び出して大小を知る …というような呼び出しが発生して、並べ替えてくれるんです。 ※実際にはもう少し良いソートアルゴリズムが使用され、比較回数も少ないです なので、「2数を比較できる関数を用意してくれ」ということだけ、要求されているのですね。 要素数がいくつになっても、「要素の大小を決定してくれる関数」が一つあれば、それを山ほど呼び出してソート作業をしてくれます。
お礼
ありがとうございました。