質問: array('php','vb','ruby','c'); usort($a, 'func'); ``` 実行後の配列$aは、 array(0 => 'c' , 1 => 'vb' , 2 => 'php' , 3 => 'ruby') となるのですが、関数func()の$x,$yにはどういう風に配列から値が代入されていくのか、 strlen($x) - strlen($y) の値を返すことで何故短い文字列順に並べることができるのかがわかりません。
回答: それは公式のドキュメントを読むとわかります。 http://php.net/manual/ja/function.usort.php > > 比較関数は、最初の引数と二番目の引数の比較結果を返します。最初の引数のほうが二番目の引数より大きい場合は正の数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の数を返す必要があります。 > > > とあるので、最初のループだとstrlen('php') - strlen('vb')で1になるので最初の引数の方が2番目の引数より大きい場合に正の数を返すことが正しく処理できます。