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 相关文章推荐
php强制下载类型的实现代码
Apr 21 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
php全角字符转换为半角函数
Feb 07 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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 接口类与抽象类的实际作用
2009/11/26 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
python实用代码片段收集贴
2015/06/03 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python的时间模块datetime详解
2017/04/17 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
用python对excel查重
2020/12/07 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
办公室年终个人自我评价
2013/10/28 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
2014高考励志标语
2014/06/05 职场文书
趣味运动会广播稿
2014/09/13 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
幽灵公主观后感
2015/06/09 职场文书