<?php
class order{
/**
*
* 数组排序
* @param array $arr 例如:
* array (
array (
'deskId' => '460646',
'deskName' => '房间1',
'userCount' => '2',
'miniGold' => '100',
),
array (
'deskId' => '460647',
'deskName' => '房间2',
'userCount' => '1',
'miniGold' => '100',
)
);
* @param string $order_by 根据哪个字段排序,如多个字段,用逗号隔开,有先后顺序。
* 例如:userCount:desc,serverPort,miniGold:asc
* 冒号前:数组字段,冒号后:排序规则(排序规则不用区分大小写)
* 如排序规则未填,默认DESC
*
*/
function quick_sort($arr=array(),$order_by=NULL){
$order_arr = array();
$type_arr = array();
if(count($arr)<=1) return $arr;//如果个数不大于一,直接返回
if(is_string($order_by)){
$order_arr = explode(',', $order_by);
if(is_array($order_arr)){
foreach ($order_arr as $k=>$v){
$o_arr = explode(':', $v);
$order_arr[$k] = isset($o_arr[0])?$o_arr[0]:'desc';
$type_arr[$k] = isset($o_arr[1])?$o_arr[1]:'desc';
}
}else{
exit('param format error!');
}
}
$left_arr=array();
$right_arr=array();
for($i=1;$i<count($arr);$i++){
$cnt = count($order_arr);
foreach ($type_arr as $t_key=>$t_val){
$type = strtolower($t_val);
$order_by = $order_arr[$t_key];
$key=$arr[0][$order_by];
if($type == 'asc'){
//从小到大
if($arr[$i][$order_by]<$key){
$left_arr[]=$arr[$i];break;
}else if($arr[$i][$order_by]>$key){
$right_arr[]=$arr[$i];break;
}else{
if($cnt == $t_key+1){ //最后的排序未符合规则
$right_arr[]=$arr[$i];
}
continue;
}
}else{
//从大到小
if($arr[$i][$order_by]>$key){
$left_arr[]=$arr[$i];break;
}else if($arr[$i][$order_by]<$key){
$right_arr[]=$arr[$i];break;
}else{
if($cnt == $t_key+1){ //最后的排序未符合规则
$left_arr[]=$arr[$i];
}
continue;
}
}
}
}
$left_arr = $this->quick_sort($left_arr,$order_by,$type);
$right_arr = $this->quick_sort($right_arr,$order_by,$type);
return array_merge($left_arr,array($arr[0]),$right_arr);
}
}

redis取出的数据是数组,但是需要排序,所以今天搞出一个对数组排序的函数。

PHP的数组排序函数的更多相关文章

  1. php数组排序函数

    下边提到的几个数组函数的排序有一些共性: 1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型.2 函数名中出现单a表示association,含义为,在按值排序的 ...

  2. 常用的php数组排序函数

    分享几个php数组排序函数,每个函数出去sort是排序的意思前缀字母的含义分别代表: a 索引 k 数组键 r 逆向 u 用户自定义 顺序排序函数 sort — 对数组排序  ksort — 对数组按 ...

  3. PHP数组排序函数有哪些

    PHP数组排序函数有哪些 一.总结 一句话总结:其实也就是是否保持索引,对键排序还是对值排序,除了sort,rsort.shuffle,usort外,都是保持索引的 是否保持索引 键排序 值排序 除了 ...

  4. 一个不错的PHP二维数组排序函数简单易用存用

    一个不错的PHP二维数组排序函数简单易用存用 传入数组,传入排序的键,传入排序顺序 public function array_sort($arr,$keys,$type='asc') { $keys ...

  5. Js数组排序函数sort()

    JS实现多维数组和对象数组排序,用的其实就是原生sort()函数,语法为:arrayObject.sort(sortby)(sortby 可选.规定排序顺序.必须是函数.) 返回值为对数组的引用:请注 ...

  6. PHP数组排序函数array_multisort()函数详解

    这个函数因为用到了,并且在网上找了半天终于找到了一个写的通俗易懂的文章,在这里分享给大家. 原文链接:http://blog.163.com/lgh_2002/blog/static/44017526 ...

  7. PHP数组排序函数array_multisort()函数详解(二)

    array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 例如array_multisort($a,$b),$a,$b是两个数组,如果排 ...

  8. PHP的一个牛逼的数组排序函数array_multisort

    函数详情,具体可参考 官方手册 array_multisort 实际问题是这样的,有这么一组数据: $arr_times = array( array('2018-04-12 04:25:00', 3 ...

  9. JS中的数组排序函数sort()

    JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject.sort ...

随机推荐

  1. [转]jquery mobile中redirect重定向问题

    本文转自:http://www.cnblogs.com/freeliver54/p/3529813.html 在jquerymobile提交后如果要进行网页重定向时,一定要在form或<a> ...

  2. UIScrollView设置滑动的距离

    设置好scrollView.width即是控制滑动的距离, scrollView.clipsToBounds = NO;控制是否显示多出的部分(可灵活运用)

  3. Navicat Premium连接Oracle 问题汇总

  4. Riemann映射定理

    单复变函数几何理论最高的成就我想应该属于Riemann映射定理吧! Riemann映射定理:$\mathbb C$中任意边界多余一个点的单连通域$D$都与单位圆盘$B(0,1)$等价,即存在着$D$上 ...

  5. python之I/O操作

    IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 比如你打开 ...

  6. 104-switch语句读法:

  7. iOS自动检测版本更新

    虽然苹果官方是不允许应用自动检测更新,提示用户下载,因为苹果会提示你有多少个软件需要更新,但是有的时候提示用户一下有新版还是很有必要的. 首先说一下原理: 每个上架的苹果应用程序,都会有一个应用程序的 ...

  8. ShareSDK分享失败的原因

    关于分享估计很多都用的是ShareSDK的社会化分享,简单方便,支持的种类很多,但是一般的话都还是QQ,微信,新浪微博,腾讯微博为主. 最近需要导入一个分享的模块,失败了几次之后最终成功,分享给大家, ...

  9. 【DWR系列01】-DWR简介及入门例子

    .literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...

  10. 攻城狮在路上(陆)-- hadoop单机环境搭建(一)

    一.环境说明:     操作系统:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86 ...