PHPのusort関数について
PHPにおけるusort関数およびuasort uksort関数の使い方がわかりません。
$array = array("b" => "bbbb","c" => "cc","d" => "ddddddddddd","e" => "eee","a" => "a","f" => "ffffffff","g" => "gg","h" => "hh");
上記のような配列があった場合
uasort($array,
function($a,$b){
if (strlen($a) == strlen($b)) {
return 0;
}
if(strlen($a) > strlen($b)){
return -1;
}else if(strlen($a) < strlen($b)){
return 1;
}
}
);
print_r($array);
上記のようなコードの場合
(
[d] => ddddddddddd
[f] => ffffffff
[b] => bbbb
[e] => eee
[h] => hh
[g] => gg
[c] => cc
[a] => a
)
という結果がかえてきます。
ただ、実際このコードでなにがおきてるかわかりません。
まず、uasort関数の第二引数に渡す関数の引数 $a,$bはいったいどんな順番で第一引数の配列からわたされているのでしょうか?
そして、$a と$ bの値が同じ場合に0を返した場合なにがおきてるのでしょうか?
同じく return 1;を返すときと
return -1;を返すときと
いったいどのような処理がおこなわれていてどういうなぜ 上記のような配列を返すことになるのでしょうか?
そもそも
PHPマニュアルから参照しますが
比較関数は、最初の引数と二番目の引数の比較結果を返します。最初の引数のほうが二番目の引数より大きい場合は正の数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の数を返す必要があります。
上記説明も、どうにも理解できません。
どうも全体的にusort関数系の使い方がわかりません。
識者の方よろしくご教授いただけますようお願いします。
お礼
laughsheepさん有難うございました。 何とかできました。今後とも宜しくお願い致します。