根据数组的键进行比较大小,排序,就不用说了,php有很多,很方便的内置函数,krsort(), ksort()等
如果是根据数组的值进行比较大小就麻烦一些。
如果值没有重复的情况,可以先用 array_flip() 交换键、值;然后krsort(),然后在array_flip()交换回来,就可以比较大小。
有值重复的情况,就要用到一些排序算法了,不过php有很方便的回调函数 uasort() 会保持原来的索引、usort() 会重建索引。
下载: krsort.php
- <?php
- function cmp($a, $b){
- if ($a[”nums”] == $b[”nums”]) {
- return 0;
- }
- return ($a[”nums”] < $b[”nums”]) ? -1 : 1;
- }
- $arr = Array(
- 0 => Array(
- “username” => owen,
- “nums” => 2,
- ),
- 1 => Array(
- “username” => d5s,
- “nums” => 5,
- ),
- 2 => Array(
- “username” => pt,
- “nums” => 3,
- ),
- );
- uasort ($arr, “cmp”);
- echo ‘<pre style=”text-align:left”>’;
- print_r($arr);
- echo ‘</pre>’;
- ?>
Array
(
[0] => Array
(
[username] => owen
[nums] => 2
)
[2] => Array
(
[username] => pt
[nums] => 3
)
[1] => Array
(
[username] => d5s
[nums] => 5
)
)