• 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);
  • 相关阅读:
    隐马尔可夫模型(一)
    酒罢问君三语
    Reveal使用教程
    李洪强和你一起学习前端之(8)CSS复习
    李洪强和你一起学习前端之(7)定位盒子 css可见性 滑动门案例
    李洪强和你一起学习前端之(6)浮动 布局 定位
    李洪强和你一起学习前端之(5)css书写位置 优先级和伪类
    李洪强和你一起学习前端之(4)HTML5介绍
    李洪强和你一起学习前端之(3)Css基础和选择器
    李洪强和你一起学习前端之(2)表格、表单、标签语义化
  • 原文地址:https://www.cnblogs.com/gentsir/p/8302182.html
Copyright © 2020-2023  润新知