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.数据必须有长度限制 一维数组 *一.数 ...
随机推荐
- Linux下安装jdk8步骤详述(转载)
Linux下安装jdk8步骤详述 原文地址:http://www.cnblogs.com/shihaiming/p/5809553.html 作为Java开发人员,在Linux下安装一些开发工具是必备 ...
- 《LeetBook》leetcode题解(17):Letter Combinations of a Phone Number[M]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- javascript字符串拼接
var c='../Project/SelectPerson.aspx?personList='+'"'+personListValue+'"' X('Window2').x_sh ...
- notepad++上搭建gtk+2.0/3.x开发环境
前言 老师布置了一道题需要用到图形界面,于是开始找图形库.最后选择了gtk+图形库,然后折腾了大概一天. 这里记录自己新学到的知识,同时也给后来者一些便利. 准备 下载以下内容 notepad++(由 ...
- python如何帮我在投资中获取更高收益
搞技术的大都比较纯粹,比较实在,除了工资之外基本就没有别的收入了(少部分人能接外包赚外块).或许是迫于生活的压力,或许是不甘于固定的工资,或许是出于技术人骨子里的好奇,亦或是这几年关于理财投资的大力宣 ...
- tensorflow model save and restore
TensorFlow 模型保存/载入 我们在上线使用一个算法模型的时候,首先必须将已经训练好的模型保存下来.tensorflow保存模型的方式与sklearn不太一样,sklearn很直接,一个skl ...
- ls命令显示的total你知道代表着什么吗?
今天我无意间在用ls命令的时候发现显示的内容里的total,这个total代表着什么,引起了我的疑惑. 接下来开始解开它的神秘面纱. total后面的数字是指当前目录下所有文件所占用的空间总和,它是怎 ...
- C#中通过Lambda表达式为委托传入更多的参数
如: DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += (o, e) => { d ...
- MVC中分页的实现
我在 (www.helpqy.com) 中使用了下面的分页技术. 分页可以采用troygoode提供的开源包,其开源网站主页为:https://github.com/TroyGoode/PagedLi ...
- Week5——团队选题&需求分析
Deadline: 2017-10-22 10:00PM,以博客发表日期为准. 评分基准: 按时交 - 有分(团队选题-5分,,团队贡献分-5分,需求分析-10分,原型设计-10分),检查的项目包括后 ...