PHP二维数据排序,二维数据模糊查询
一、因为项目中的一个报表需要合并三个表的数据,所以分表查询再合并数据,利用PHP数组函数进行排序,搜索。三表合并后的数组结构如下:
Array
(
[0] => Array
(
[history_id] => 12
[sla_group_id] => 1
[sla_id] => -1
[create_time] => 1513057695
[tasklog_id] => 12
[tasklog_time] => 2017-12-12 13:48:15
[tasklog_name] => window_2008
[tasklog_type] => 分组立即调度
[tasklog_user] => admin
[tasklog_status] => 3
) [1] => Array
(
[history_id] => 11
[sla_group_id] => 1
[sla_id] => 1
[create_time] => 1513057563
[tasklog_id] => 11
[tasklog_time] => 2017-12-12 13:46:03
[tasklog_name] => centos7_USHARK
[tasklog_type] => 一小时备份频率
[tasklog_user] => 系统自动
[tasklog_status] => 3
) [2] => Array
(
[history_id] => 19
[sla_group_id] => 1
[sla_id] => 98
[create_time] => 1513059714
[tasklog_id] => 19
[tasklog_time] => 2017-12-12 14:21:54
[tasklog_name] => huawei_fusion_backup
[tasklog_type] => 华为虚拟化备份
[tasklog_user] => ushark.net
[tasklog_status] => 2
) [3] => Array
(
[history_id] => 41
[sla_group_id] => 0
[sla_id] => -1
[create_time] => 1513069534
[status] => 2
[tasklog_id] => 41
[tasklog_time] => 2017-12-12 17:05:34
[tasklog_name] => centos7-11自增非整数测试
[tasklog_user] => admin
[tasklog_type] => 立即调度
[tasklog_status] => 2
) [4] => Array
(
[history_id] => 40
[sla_group_id] => 0
[sla_id] => -1
[create_time] => 1513067574
[status] => 2
[tasklog_id] => 40
[tasklog_time] => 2017-12-12 16:32:54
[tasklog_name] => win2008安装MySQL
[tasklog_user] => impp.cc
[tasklog_type] => 策略备份
[tasklog_status] => 2
) [5] => Array
(
[history_id] => 39
[sla_group_id] => 0
[sla_id] => -1
[create_time] => 1513067399
[status] => 2
[tasklog_id] => 39
[tasklog_time] => 2017-12-12 16:29:59
[tasklog_name] => Linux下文件
[tasklog_user] => ppstorm.com
[tasklog_type] => 立即调度
[tasklog_status] => 2
)
)
二、二维数组排序、搜索
// HTTP GET values
$length = (int) $this->input->get('length', true);
$start = (int) $this->input->get('start', true);
$order = trim($this->input->get('order', true));
$sort = trim($this->input->get('dir', true));
$search = trim($this->input->get('search', true)); // 三表数据
$vm_group = $this->safe->vm_group_task();
$vm_tasklog = $this->safe->vm_tasklog();
$vm_mounts_log = $this->safe->vm_mounts_log(); // 合并数据
$tasklog = array_merge($vm_group, $vm_tasklog, $vm_mounts_log); // !!! 二维数据搜索 !!!
if (!empty($search)) {
foreach ($tasklog as $sk => $sv) {
if (mb_stripos($sv['tasklog_name'], $search) === false
&& mb_stripos($sv['tasklog_type'], $search) === false
&& mb_stripos($sv['tasklog_user'], $search) === false
) {
unset($tasklog[$sk]);
continue;
}
}
} // 总记录
$total_record = count($tasklog); // 排序
switch ($order) {
case 1:
$sort_key = 'tasklog_name';
break;
case 2:
$sort_key = 'tasklog_type';
break;
case 3:
$sort_key = 'tasklog_user';
break;
case 4:
$sort_key = 'tasklog_time';
break;
case 5:
$sort_key = 'tasklog_status';
break;
default:
$sort_key = 'tasklog_id';
break;
}
$sort_arr = array_column($tasklog, $sort_key);
$desc_asc = $sort === 'desc' ? SORT_DESC : SORT_ASC;
array_multisort($sort_arr, $desc_asc, $tasklog); // !!! 二维数据排序 !!! // 取指定长度
$output_arr = array_slice($tasklog, $start, $length);
PHP二维数据排序,二维数据模糊查询的更多相关文章
- dplyr  数据操作  数据排序 (arrange)
		
在R中,我们在整理数据时,经常需要对数据排序,以便数据增强数据的可读性. 下面我们来看下dplyr中的,arrange函数 arrange(.data, ...) 跟filter()类似,arrang ...
 - java-自定义数据排序
		
导读:由于基本类型的数据都实现了一个共同的接口java.lang.Comparable接口,都实现了该接口下面的compareTo()方法,因此想要利用面向对象实现现实生活中的一些情景再现,比如新闻根 ...
 - 整合hibernate的lucene大数据模糊查询
		
大数据模糊查询lucene 对工作单使用 like模糊查询时,实际上 数据库内部索引无法使用 ,需要逐条比较查询内容,效率比较低在数据量很多情况下, 提供模糊查询性能,我们可以使用lucene全文 ...
 - php 二维数据排序 排行榜
		
php 二维数据排序 排行榜 $rateCount = array(); foreach($groupUsers as $user){ $rateCount[] = $user['rate']; } ...
 - 从txt文件中读取数据放在二维数组中
		
1.我D盘中的test.txt文件内的内容是这样的,也是随机产生的二维数组 /test.txt/ 5.440000 3.4500006.610000 6.0400008.900000 3.030000 ...
 - PHP 距离我最近排序+二维数组按指定列排序
		
思路: 1.获取我的位置,即:我的经纬度 2.各站点须有位置 即:排序对象有位置经纬度 3.查询要排序的站点列表 4.循环遍历计算 与我的距离 5.二维数组按 指定列(距离)排序 具体如下: ...
 - c# 二维list排序和计时
		
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
 - SQL语句(二)数据排序和单行函数
		
目录 一.排序查询 1. 基本排序 2. 多条件排序 二.单行函数 调用方法 字符函数 ①LENGTH函数 ②CONCAT函数 ③upper 和 lower ④substr ⑤instr ⑥trim ...
 - c#   一维数组,二维数组,多维数组。
		
数组就是给一个变量定义多个字符,可以是string也可以是int.或者说是一组变量. 可以更加方便的操作大量数据. 数组的定义1.数组里面的内容必须是同一类型2.数据必须有长度限制 一维数组 *一.数 ...
 
随机推荐
- HttpURLConnection解析
			
请求响应流程 设置连接参数的方法 setAllowUserInteraction setDoInput setDoOutput setIfModifiedSince setUseCaches setD ...
 - OpenGL10-骨骼动画原理篇(2)
			
接上一篇的内容,上一篇,简单的介绍了,骨骼动画的原理,给出来一个 简单的例程,这一例程将给展示一个最初级的人物动画,具备多细节内容 以人走路为例子,当人走路的从一个站立开始,到迈出一步,这个过程是 一 ...
 - Ceph 块设备 - 命令,快照,镜像
			
目录 一.Ceph 块设备 二.块设备 rbd 命令 三.操作内核模块 四.快照基础 rbd snap 五.分层快照 六.镜像 rbd mirror 七.QEMU 八.libvirt 九.Openst ...
 - scanf()函数分析
			
首先,先来讲一下scanf的读取流程: 从键盘输入的都是字符类型(一系列的字符),scanf()的作用就是将这个字符序列转换成一个或多个指定的类型,并保存到变量中. 从键盘输入的字符序列会先缓存到键盘 ...
 - C语言理论知识
			
C语言-----理论部分 一:软件开发概述1.程序语言的发展:机器语言-->汇编语言-->高级语言.2.软件开发的基本步骤与方法:分析问题,建立数学模型-->确定数据结构和算法- ...
 - Nginx设置静态页面压缩和缓存过期时间的方法
			
使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...
 - 修改MVC默认的pageBaseType以添加功能
			
试想下在MVC的前端页面JS或者html中需要使用多语言,而后端的多语言是维护在资源文件中的,前端如果使用的话需要使用AJAX频繁的获取,一个页面中可能会存在大量的需要语言转换的地方,频繁使用AJAX ...
 - typeof null 为什么等于 object?
			
之前只知道typeof null = object,但是却从来不知道是为什么.最新查阅资料的时候,看到了这个原理,记录下来,方便自己以后查看. 原理是这样的,不同的对象在底层都表示为二进制,在 Jav ...
 - ruby中Regexp用法
			
Regexp 正则表达式的类.正则表达式的字面值是以双斜线内夹表达式的形式生成的. /^this is regexp/ 还可以使用Regexp.new(string)来动态地生成正则表达式对象. 超类 ...
 - "setItem@[native code] logging run flush"
			
safari 中出现 "setItem@[native code] logging run flush" 此问题出现在 6s plus ios系统为10.2 时, safari打开 ...