php比较多维数组中值的大小排序实现代码

  如果值没有重复的情况,可以先用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.glzy8.com/image.gif' ,

  o_detail => 人人,

  vote_num => 1

  ),

  1 => Array

  (

  o_id => 1844,

  o_name => 芭比,

  o_pic => 'http://upload.glzy8.com/game_image/dfxxz/dfVIP.files/shenxiandao.jpg',

  o_detail => 也是美女呢,

  vote_num => 2

  ),

  2 => Array

  (

  o_id => 1843,

  o_name => 程程,

  o_pic => 'http://g.glzy8.com./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.glzy8.com./upload_img/2011-06/31554_4d0088da7a61ad9c8c02a530be94d98e.png

  [o_detail] => 美女哦

  [vote_num] => 3

  )

  [1] => Array

  (

  [o_id] => 1844

  [o_name] => 芭比

  [o_pic] => http://upload.glzy8.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.glzy8.com/image.gif

  [o_detail] => 人人

  [vote_num] => 1

  )

  )