PHP 实现浏览记录并按日期分组


Posted in PHP onMay 11, 2017

现有测试数据如下,要求实现如下图中的效果:

array(4) {
 [0] => array(6) {
 ["visit_id"] => int(127)
 ["goods_id"] => int(16)
 ["visittime"] => int(1494399935)
 ["goods_name"] => string(53) "OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金"
 ["shop_price"] => string(6) "500.00"
 }
 [1] => array(6) {
 ["visit_id"] => int(124)
 ["goods_id"] => int(13)
 ["visittime"] => int(1494399921)
 ["goods_name"] => string(76) "SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款"
 ["shop_price"] => string(7) "4000.00"
 }
 [2] => array(6) {
 ["visit_id"] => int(123)
 ["goods_id"] => int(27)
 ["visittime"] => int(1494399903)
 ["goods_name"] => string(85) "爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)"
 ["shop_price"] => string(6) "329.00"
 }
 [3] => array(6) {
 ["visit_id"] => int(120)
 ["goods_id"] => int(26)
 ["visittime"] => int(1494224263)
 ["goods_name"] => string(21) "欢乐谷免票一张"
 ["shop_price"] => string(5) "50.00"
 }
}

PHP 实现浏览记录并按日期分组

还没实现之前我想这个代码不知道要O(n)呢还是更高的复杂度才能实现,细想一下,其实php的数组底层就是哈希实现的,如何简单利用这个特性使复杂度降到O(1)呢?

show me the code:

/* 浏览记录按日期分组 */
function groupVisit($visit)
{
 $curyear = date('Y');
 $visit_list = [];
 foreach ($visit as $v) {
  if ($curyear == date('Y', $v['visittime'])) {
   $date = date('m月d日', $v['visittime']);
  } else {
   $date = date('Y年m月d日', $v['visittime']);
  }
  $visit_list[$date][] = $v;
 }
 return $visit_list;
}

说明:入参 $visit 就是上面一开始的测试数据,函数中还对用户体验做了一些优化,比如,你的浏览记录中总是显示出今年的年份,是不是感觉有点冗余,所以如果是本年份的话,年份就要隐藏起来,其他年份还是照样显示出来。不然代码会更加简洁。

好了上面的测试数据经过该函数之后,再把返回值打印出来,有:

array(2) {
 ["05月10日"] => array(3) {
 [0] => array(6) {
  ["visit_id"] => int(127)
  ["goods_id"] => int(16)
  ["visittime"] => int(1494399935)
  ["goods_name"] => string(53) "OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金"
  ["shop_price"] => string(6) "500.00"
 }
 [1] => array(6) {
  ["visit_id"] => int(124)
  ["goods_id"] => int(13)
  ["visittime"] => int(1494399921)
  ["goods_name"] => string(76) "SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款"
  ["shop_price"] => string(7) "4000.00"
 }
 [2] => array(6) {
  ["visit_id"] => int(123)
  ["goods_id"] => int(27)
  ["visittime"] => int(1494399903)
  ["goods_name"] => string(85) "爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)"
  ["shop_price"] => string(6) "329.00"
 }
 }
 ["05月08日"] => array(1) {
 [0] => array(6) {
  ["visit_id"] => int(120)
  ["goods_id"] => int(26)
  ["visittime"] => int(1494224263)
  ["goods_name"] => string(21) "欢乐谷免票一张"
  ["shop_price"] => string(5) "50.00"
 }
 }
}

对的,这正是我想要的效果。

以上所述是小编给大家介绍的PHP 实现浏览记录并按日期分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
用cookies来跟踪识别用户
Oct 09 PHP
COM in PHP (winows only)
Oct 09 PHP
实用函数8
Nov 08 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php发送post请求的三种方法
Feb 11 PHP
php遍历目录方法小结
Mar 10 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 #PHP
使用WAMP搭建PHP本地开发环境
May 10 #PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 #PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 #PHP
php7 安装yar 生成docker镜像
May 09 #PHP
php简单生成一组与多组随机字符串的方法
May 09 #PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 #PHP
You might like
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
扩展String功能方法
2006/09/22 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
NodeJS实现同步的方法
2019/03/02 NodeJs
vue如何截取字符串
2019/05/06 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
Python3内置模块之base64编解码方法详解
2019/07/13 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
趣味体育活动方案
2014/02/08 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
高中课程设置方案
2014/05/28 职场文书
人代会标语
2014/06/30 职场文书
岗位工作说明书
2014/07/29 职场文书
审计班子对照检查材料
2014/08/27 职场文书
不同意离婚代理词
2015/05/23 职场文书
高中运动会广播稿
2015/08/19 职场文书
趣味运动会口号
2015/12/24 职场文书
《所见》教学反思
2016/02/23 职场文书