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.数据必须有长度限制 一维数组 *一.数 ...
随机推荐
- Django中涉及金融的项目
在Django中,如果一个项目涉及了金融,他的要求是十分严格的. 所以嘞,这里就有一些坑,很多坑,第一次开发的时候很容易出现一系列的错误 在涉及金融计算的地方,不能使用float类型 什么鬼,但事实就 ...
- docker 查看拉取镜像源地址
命令: cat /etc/docker/de
- 正则中str.match(pattern)与pattern.exec(str)的区别
这两个函数除了调用对象以及参数不同之外,<javascript高级程序设计>中对exec描述比较详细,对match只是说返回数组跟exec一样.书中并没有说只说了正则在非全局模式下的情况, ...
- 【数组】Game of Life
题目: According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a ce ...
- Android 中的冷启动和热启动
App的Activity退出之后,应用的进程并不会被杀死,而是保留在那里.当再次打开App的Activity时,会从已有的进程中创建Activity,是为“热启动”.若打开Activity时没有进程, ...
- 忽略“Signal: SIGSEGV (Segmentation fault)”
1. touch ~/.gdbinit 2. 在.gdbinit文件中添加“handle SIGSEGV nostop noprint pass”
- springboot-12-自定义拦截器的配置interceptor
springmvc中拦截器的概念已经被弱化了, springboot中使用的也不甚广泛, 通常在用户登录等方面仍有用处 创建拦截器步骤: , 创建拦截器类继承HandlerInterceptor , ...
- 面试题-----求单链表的倒数第k个节点
#include <iostream> using namespace std; struct node{ int value; struct node *next; }; struct ...
- Dubbo2.7源码分析-SPI的应用
SPI简介 SPI是Service Provider Interface的缩写,即服务提供接口(翻译出来好绕口,还是不翻译的好),实质上是接口,作用是对外提供服务. SPI是Java的一种插件机制,可 ...
- Session和Cookie之间区别与联系
一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,W ...