php uasort 多维数组中值排序

hp中根据数组的键(key)进行比较,排序,有很多内置函数可以轻松解决,如krsort(),ksort()等。如果是根据数组的值(value)进行比较就麻烦一些。

如果值没有重复的情况,可以先用array_flip()来交换键和值,然后krsort(),最后再array_flip()交换回来,就可以比较大小了。如果要截取数组,可用array_slice()。

如果有值重复的情况,就要用到一些排序算法了,不过php有很强大的函数uasort(),使用自定义的比较函数对数组中的值进行排序并保持索引关联,usort()则会重建索引。



function cmp($a,$b){
          if($a["vote_num"] == $b["vote_num"]) {
             return 0;
          }
          return($a["vote_num"] > $b["vote_num"]) ? -1 : 1;
      }
 
$arr = Array
(
    0 =>Array
       (
           o_id=> 1861,
           o_name=> 2,
           o_pic=> 'http://g.pps.tv/image.gif' ,
           o_detail=> 人人,
           vote_num=> 1
       ),
    1 =>Array
       (
           o_id=> 1844,
           o_name=> 芭比,
           o_pic=>'http://upload.ppstream.com/game_image/dfxxz/dfVIP.files/shenxiandao.jpg',
           o_detail=> 也是美女呢,
           vote_num=> 2
       ),
    2 =>Array
       (
           o_id=> 1843,
           o_name=> 程程,
           o_pic=>'http://g.pps.tv./upload_img/2011-06/31554_4d0088da7a61ad9c8c02a530be94d98e.png',
           o_detail=> 美女哦,
           vote_num=> 3
       )
);
   uasort($arr,”cmp“);
   echo ‘<pre style="text-align:left" >’;
   print_r ($arr);
   echo ‘< /pre >’;
返回
Array
(
[2] => Array
(
[o_id] => 1843
[o_name] => 程程
[o_pic] =>http://g.pps.tv./upload_img/2011-06/31554_4d0088da7a61ad9c8c02a530be94d98e.png
[o_detail] => 美女哦
[vote_num] => 3
)
[1] => Array
(
[o_id] => 1844
[o_name] => 芭比
[o_pic] =>http://upload.ppstream.com/game_image/dfxxz/dfVIP.files/shenxiandao.jpg
[o_detail] => 也是美女呢
[vote_num] => 2
)
[0] => Array
(
[o_id] => 1861
[o_name] => 2
[o_pic] => http://g.pps.tv/image.gif
[o_detail] => 人人
[vote_num] => 1
)
)



例2:

$city=array (
  10000000 =>
  array (
    'ename' => 'Beijing',
    'cname' => '北京',
    'shortname' => 'BJ',
  ),
  11000000 =>
  array (
    'ename' => 'Tianjin',
    'cname' => '天津',
    'shortname' => 'TJ',
  ),

按城市名称排序

function provinceAsc($a, $b){ return strcasecmp($a['ename'], $b['ename']) ;}


  uasort($city,'provinceAsc');


你可能感兴趣的:(php uasort 多维数组中值排序)