二维数组foreach嵌套遍历,判断连续3天以上的算有效数据
2015-11-10 00:00
232 查看
$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天以上的算有效数据
相关文章推荐
- Android(StrictMode)严苛模式介绍
- oracle11g之完全卸载
- linux桌面环境应用
- BarTender中字符筛选器要怎么用?
- Redis & memcache
- Context解析 ----- 读后感
- 我理解的工厂模式和策略模式的区别
- 《IT蓝豹》完整阅读软件客户端app
- 链表的建立以及增加、删除结点的C语言完整代码
- 如何将java工程转变为web工程
- java的注释原则
- 死去活来
- U盘出现0字节问题该如何解决
- Java 登陆拦截器
- 创业新蓝海:代理自助建站赚中小企业钱
- 关于libqrencode报错的问题
- mongodb开发遇到的问题总结
- LightOJ - 1221 Travel Company(负环)
- 如何解决FineReader中多页扫描选项不可用问题
- iMindMap中字体太小该如何解决