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.数据必须有长度限制 一维数组 *一.数 ...
随机推荐
- 第5章—构建Spring Web应用程序—SpringMVC详解
SpringMVC详解 5.1.跟踪Springmvc的请求 SpringMVC的核心流程如下: 具体步骤: 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求 ...
- springclould nginx转发 websocket400报错问题
之前一直找原因一直围绕着nginx转发的问题 说头信息没设置全 然后nginx配置文件上加了这些 #http块加以下几行: map $http_upgrade $connection_upgrade ...
- css 中 stick footer 布局实现
做项目中,我们在写弹框的时候,不管弹框的内容多或者少,可能需要一些内容需要固定在框底部,比如关闭按钮.stick footer 就是让 footer 元素固定在底部 当内容不足满屏时,footer 紧 ...
- Windows Server2016服务器系统创建域服务器
原先是有图片,因为图片是直接粘贴上来的,发布之后图片都看见了,然后都使用上传图片的方式才搞定,这也是博客园比较坑的地方: 也可以查看该链接含图片: http://www.cnblogs.com/all ...
- 初始JAVA中浅拷贝和深拷贝
1. 简单变量的复制 public static void main(String[] args) { int a = 5; int b = a; System.out.println(a); Sys ...
- pandas数据分析
本篇主要介绍如何用pandas来分析一份刚拿到的数据集,即做数据挖掘或清洗的工作. 这里以贷款申请预测的数据来作为例子 一.查看基本信息 拿到数据首先看看大致结构,查看行列数,dataframe数据结 ...
- java的PreparedStatement中使用like时的问题
SQL:select * from students where name like '%tommy%'; 正常的sql如上,是可以直接执行的, 那放到java的P热怕热的Statement中就应该是 ...
- [LeetCode]LinkedList Cycle
题目说明 Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without usi ...
- curl的head小记
CURLINFO_HEADER_OUT,如果启用会在curl_getinfo里得到发送的头信息 CURLINFO_HEADER 如果启用,会在结果里返回回应的消息头信息
- Automapper问题记录
在Automapper使用中会碰到一些未能映射或者错误的问题,这些问题可能会经常忘记如何处理,想到一些就记录一些: 映射值有时为空又不报错的情况 这很可能是由于目标类中的部分属性有问题导致的,最简单的 ...