私はphp関数usortがどのように機能するかを理解しようとしています。私はそのようなコードを持っています:
<?php
$users[] = array('login' => 'moon', 'name' => 'Chris');
$users[] = array('login' => 'star', 'name' => 'Piter');
$users[] = array('login' => 'mars', 'name' => 'Tim');
$users[] = array('login' => 'earth', 'name' => 'Garry');
function compare($a, $b) {
echo $a['login'] . '--' . $b['login'] . '<br />';
echo strcmp($a['login'], $b['login']) . '<br />';
return strcmp($a['login'], $b['login']);
}
usort($users, "compare");
echo '<pre>'; print_r($users); echo '</pre>';
?>
次のような結果が出力されます。
star--moon
1
star--mars
1
earth--star
-1
moon--earth
1
mars--moon
-1
earth--mars
-1
Array
(
[0] => Array
(
[login] => earth
[name] => Garry
)
[1] => Array
(
[login] => mars
[name] => Tim
)
[2] => Array
(
[login] => moon
[name] => Chris
)
[3] => Array
(
[login] => star
[name] => Piter
)
)
私が理解している限り、2番目のパラメーターは比較関数である必要があり、3つの値(-1,0,1)しか返すことができず、usort
この結果を使用して配列を並べ替えることができますか?また、usort
Quicksort実装を使用して配列をソートすることも読みました。それが、星が最初で月が2番目である理由です。クイックソートは配列を2つの部分に分割し、それをソートしますか?そして、この関数を2,3次元配列に実装できますか?