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

yipeiwu_com6年前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 => '/zb_users/upload/202003/b0xleza5lzy.gif' ,
o_detail => 人人,
vote_num => 1
),

1 => Array
(
o_id => 1844,
o_name => 芭比,
o_pic => 'http://upload.jb51.net/game_image/dfxxz/dfVIP.files/shenxiandao.jpg',
o_detail => 也是美女呢,
vote_num => 2
),

2 => Array
(
o_id => 1843,
o_name => 程程,
o_pic => '/zb_users/upload/202003/c5vvggedgef.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.jb51.net./upload_img/2011-06/31554_4d0088da7a61ad9c8c02a530be94d98e.png
[o_detail] => 美女哦
[vote_num] => 3
)
[1] => Array
(
[o_id] => 1844
[o_name] => 芭比
[o_pic] => http://upload.jb51.net/game_image/dfxxz/dfVIP.files/shenxiandao.jpg
[o_detail] => 也是美女呢
[vote_num] => 2
)
[0] => Array
(
[o_id] => 1861
[o_name] => 2
[o_pic] => http://g.jb51.net/image.gif
[o_detail] => 人人
[vote_num] => 1
)
)

相关文章

php中++i 与 i++ 的区别

1、++i 的用法(以 a=++i ,i=2 为例) 先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就是 a=i ), 则最终 a 值等于 3 , i 值等于 3...

从wamp到xampp的升级之路

准备学习php框架Laravel,但PHP版本要求5.4+,目前用的wamp默认版本5.3,所以准备使用xampp,以下为记录 卸载wamp,略过 > ps:注意卸载wamp会删除...

php装饰者模式简单应用案例分析

本文实例讲述了php装饰者模式简单应用。分享给大家供大家参考,具体如下: 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装...

详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)

详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)

1、设置字体、风格 代码主题选择Monokai会是彩色的代码。 2、配置CI代码提示 <1>下载代码提示项目: https://github.com/topdown/p...

php方法调用模式与函数调用模式简例

现有某函数与对象如下: 复制代码 代码如下: var doubling=function(x){ return x*2; }; var obj={ val:100, }; 函数调用模式...