background image

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

php 中根据数组的键(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 => '' , 
o_detail => 人人, 
vote_num => 1 
), 
 
1 => Array 

o_id => 1844, 
o_name => 芭比, 
o_pic => ', 
o_detail => 也是美女呢, 
vote_num => 2 
), 
 
2 => Array