二维数组foreach嵌套遍历,判断连续3天以上的算有效数据
2019独角兽企业重金招聘Python工程师标准>>>
$studycourseinfo = $studycourseinfoModel->where($where)->limit($page->firstRow.','.$page->listRows)->order('create_time asc')->select(); //$studycourseinfos = $studycourseinfoModel->where($where)->order('course_id asc')->select();//$keys = array("user_id", "course_id");//$studycourseinfo_new = $this->makemultiarr($studycourseinfos,$keys);$cids = array();foreach($studycourseinfo as $key=>$value){$studycourseinfo_new[$value['user_id']][$value['course_id']][$value['create_time']] = $studycourseinfo[$key];$cids[$value['user_id'].'_'.$value['course_id']] = $value['user_id'].'_'.$value['course_id'];}$newStudyinfo = array();foreach($cids as $keys=>$values){$tempArr = explode('_', $values);//var_dump($tempArr);exit;$startTime = 0;$count = 0;$tempStudyinfo = array();foreach($studycourseinfo_new[$tempArr[0]][$tempArr[1]] as $k => $val){ if($startTime == 0){$startTime = $k;$count ++;$tempStudyinfo[] = $val;continue;} if($k - $startTime == 86400){$startTime = $k;$count ++;$tempStudyinfo[] = $val;}else{//if($tempArr[1] == 11){// echo($k.'</br>');//}if($count >= 3){//有效数据$newStudyinfo[] = $tempStudyinfo;$tempStudyinfo = array();$count = 0;}else{//无效丢弃$tempStudyinfo = array();$count = 0;}$startTime = $k;$count ++;$tempStudyinfo[] = $val;}}if($count >= 3){//有效数据$newStudyinfo[] = $tempStudyinfo;$tempStudyinfo = array();$count = 0; }}//var_dump($newStudyinfo);$i = 0;foreach ($newStudyinfo as $_k => $_val) {foreach ($_val as $_kay => $_val) {$_newStudyinfo[$i] = $_val;$i++;}}//dump($_newStudyinfo);//dump($studycourseinfo_new);//exit;
数据查询结果
转化成三维数组,用户id,课程id,详细信息
因为查询数据库的结果被处理过,所以分页不准确,可 通过有效的二维数组,获取有效的$id,用$id来查询数据库并分页
$where['total_time'] = array("EGT", 30);/* $count = $studycourseinfoModel->where($where)->count();import('ORG.Util.Page');$page = new Page($count,10);$show = $page->show(); *///$studycourseinfo = $studycourseinfoModel->where($where)->limit($page->firstRow.','.$page->listRows)->order('create_time asc')->select();//先查询全部数据,下步筛选三维数字获取有效数据$studycourseinfo = $studycourseinfoModel->where($where)->order('create_time asc')->select();foreach($studycourseinfo as $key=>$value){$studycourseinfo_new[$value['user_id']][$value['create_time']] = $studycourseinfo[$key];}$newStudyinfo = array();foreach($studycourseinfo_new as $keys=>$values){$startTime = 0;$count = 0;$tempStudyinfo = array();foreach($values as $k => $val){ if($startTime == 0){$startTime = $k;$count ++;$tempStudyinfo[] = $val;continue;} if($k - $startTime == 86400){$startTime = $k;$count ++;$tempStudyinfo[] = $val;}else{if($count >= 3){//有效数据$newStudyinfo[] = $tempStudyinfo;$tempStudyinfo = array();$count = 0;}else{//无效丢弃$tempStudyinfo = array();$count = 0;}$startTime = $k;$count ++;$tempStudyinfo[] = $val;}}if($count >= 3){//有效数据$newStudyinfo[] = $tempStudyinfo;$tempStudyinfo = array();$count = 0; }}//转二维数组$i = 0;foreach ($newStudyinfo as $_k => $_val) {foreach ($_val as $_kay => $_val) {$_newStudyinfo[$i] = $_val;$i++;}}/* * 通过有效的二维数组,获取有效的$id,用$id来查询数据库并分页*/$id = array();foreach ($_newStudyinfo as $_ks => $_vals){$id[] = $_vals['id'];}$where['id'] = array('in',$id);$count = $studycourseinfoModel->where($where)->count();import('ORG.Util.Page');$page = new Page($count,20);$show = $page->show();$studycourseinfo_newss = $studycourseinfoModel->where($where)->limit($page->firstRow.','.$page->listRows)->order('create_time asc')->select();
转载请注明:PHP博客 » 二维数组foreach嵌套遍历,判断连续3天以上的算有效数据
转载于:https://my.oschina.net/guodingding/blog/528485
二维数组foreach嵌套遍历,判断连续3天以上的算有效数据相关推荐
- Java黑皮书课后题第8章:**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组
**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平.垂直.对角线方向都可以).编写一个测试程序,提示用户输入一个数组 题目 题目描述与运行实例 破 ...
- C++二维数组按行遍历和按列遍历的区别
按行遍历的效率更高.(重要前提假设:数组,按行储存:对于clickhouse-client-cpp,由于数据是按列存储的,按列遍历的效率更好) 数组在内存中是按行储存的,按行遍历时可以由指向数组第一个 ...
- openjudge 二维数组右上坐下遍历(二维数组)
二维数组右上左下遍历 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按 ...
- php如何判断二维数组为空,PHP判断数组为空的具体方式
在学习PHP语言的时候,初学者往往会对数组感到一些棘手.不过在通过深入的学习之后,我们会发现,这些其实并没有想象中的困难.我们今天就要向大家介绍PHP判断数组为空的具体方式,希望能让新手们了解一些新知 ...
- php 二维数组为空,php 判断数组是否为空的几种方法
PHP判断数组为空方法1:count($arr); count 如果输出为0的话 那么这个数组就是空的 下面就是简单的测试代码了. $arr = array(); echo count($arr); ...
- C语言中一维数组和二维数组的寻常遍历用指针的遍历
前言 是突然想到的方法,可能早有大佬想过这样的方法,但我还是记录下来,路过的各位就当看个新鲜. 首先是寻常的遍历方法 一维数组 我们遍历一维数组,正常的方法是改变数组的下标依次打印遍历数组. 代码如下 ...
- 【C语言简单说】十九:二维数组循环嵌套(2)
这节直接用循环嵌套来输出二维数组了: 注:我说的队和列并不是一般说法,我用此比喻好让新手更好理解. #include<stdio.h> #include<stdlib.h> i ...
- php三维数组转换二维数组,php 三维数组转二维数组(多维数组变合拼二维数组)(foreach循环 数组叠加)...
/*************** * @function 三维数组转二维数组 * @Param: $array : 传入参数 * @Return: $tempArr 返回结果数组 ********** ...
- 二维数组的花式遍历技巧盘点
学算法认准 labuladong 后台回复 进群 进刷题 读完本文,可以去力扣解决如下题目: 48. 旋转图像(中等) 54. 螺旋矩阵(中等) 59. 螺旋矩阵 II(中等) 有不少读者说,看过很多 ...
最新文章
- 小白的.Net Core 2.0 ConsoleApp入门(keng)指南(一)
- java 面试 框架_这份java集合框架面试题,轻松搞定面试官!
- md文件编辑器_可能是颜值最高的微信Markdown编辑器,用Markdown的你一定会爱上
- 《软件工程(C编码实践篇)》课后感
- leetcode -- medium part
- linux 蓝牙攻击,研究人员担心BleedingTooth蓝牙漏洞给Linux系统带来风险
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
- 【操作系统】对换、分页和分段方式-思维导图
- jquery操作复选框(checkbox)
- 关于SQL中Between语句查询日期的问题
- 中文编程专栏目录, 初衷和希冀
- 网络编程技术(技术总结)
- 班级管理系统(SSM+LayUI)
- java applet init_java applet init start
- java drag_[Java教程]一步一步理解拖拽Drag(四)
- python文件打包为deb_DEB包详解
- Java算法之 循序搜寻法
- 影响因子,计算机科学,影响因子最高计算机科学期刊(前50种).doc
- 为了结婚领证,我做了个「一键结婚」插件
- 统计学习方法 - 绪论部分