<?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. json 构造和解析

    目录: (1)引入jar包: (2)json的构造: (3)json的解析: (4)遍历未知key. (1)java对json的处理,可借助org.json.jar. <!-- https:// ...

  2. 使用httpclient 调用selenium webdriver

    结合上次研究的selenium webdriver potocol ,自己写http request调用remote driver代替selenium API selenium web driver ...

  3. iOS10 远程推送代码 以及服务器端代码(.net)

    // // AppDelegate.m // MyPushDemo // // Created by justapple on 16/12/25. // Copyright © 2016年 dengq ...

  4. CentOS7 NTP 安装配置

    NTP 网络时间协议用来同步网络上不同主机的系统时间.你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间.而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP ...

  5. mysql介绍及安装

    一.MySQL介绍 1.标志 MySQL的海豚标志的名字叫"sakila",它是由MySQL AB的创始人从用户在"海豚命名"的竞赛中建议的大量的名字表中选出的 ...

  6. python windows时间同步工具

    由于某种原因(BIOS电池没电),电脑的系统时间会与我们的北京时间不同步,将会导致如下问题: 1. 抢火车票的时候已经过时间了 2.别的同事都走了,你还以为没下班 …… 规避问题的方法:同步系统时间 ...

  7. F#之旅2 - 我有特别的学F#技巧

    原文地址:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/learning-fsharp/ Learning F#Functio ...

  8. WebStorm 2016.2 破解方法

    http://www.jetbrains.com/ 以前的 http://idea.lanyus.com/ 不能激活了 有帖子说的 http://15.idea.lanyus.com/ http:// ...

  9. ExtJS 数据模型

    自定义数据模型 数据模型类其实就是一个继承自Ext.data.Model 的类. Ext.define('MyApp.User', { extend: 'Ext.data.Model', fields ...

  10. Java 之 常用类(二)

    1.StringBuffer a.StringBuffer 与 String:①StringBuffer是一个全新的类型,与String没有继承关系 ②StringBuffer的出现是为了解决Stri ...