php 比较多维数组大小 排序

根据数组的键进行比较大小,排序,就不用说了,php有很多,很方便的内置函数,krsort(), ksort()等
如果是根据数组的值进行比较大小就麻烦一些。
如果值没有重复的情况,可以先用 array_flip() 交换键、值;然后krsort(),然后在array_flip()交换回来,就可以比较大小。

有值重复的情况,就要用到一些排序算法了,不过php有很方便的回调函数 uasort() 会保持原来的索引、usort() 会重建索引。

下载: krsort.php
  1. <?php 
  2.    function cmp($a, $b){ 
  3.        if ($a[nums] == $b[nums]) { 
  4.            return 0;
  5.        } 
  6.        return ($a[nums] < $b[nums]) ? -1 : 1;
  7.    } 
  8.    $arr = Array( 
  9.                0 => Array( 
  10.                        “username” => owen,
  11.                        “nums” => 2,
  12.                    ),
  13.                1 => Array( 
  14.                        “username” => d5s,
  15.                        “nums” => 5,
  16.                    ),
  17.                2 => Array( 
  18.                        “username” => pt,
  19.                        “nums” => 3,
  20.                    ),
  21.            );
  22.    uasort ($arr, “cmp);
  23.    echo ‘<pre style=”text-align:left”>’;
  24.    print_r($arr);
  25.    echo ‘</pre>’;
  26. ?>

Array
(
[0] => Array
(
[username] => owen
[nums] => 2
)

[2] => Array
(
[username] => pt
[nums] => 3
)

[1] => Array
(
[username] => d5s
[nums] => 5
)

)

此条目发表在 程序 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>