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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
一步一步学习PHP(6) 面向对象
Feb 16 PHP
PHP中数组定义的几种方法
Sep 01 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
php实现的SESSION类
Dec 02 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
PHP手机短信验证码实现流程详解
May 17 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
基于mysql的论坛(2)
2006/10/09 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
php中yii框架实例用法
2020/12/22 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
Python异常处理知识点总结
2019/02/18 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
Python matplotlib可视化实例解析
2020/06/01 Python
python属于解释型语言么
2020/06/15 Python
英国钻石公司:British Diamond Company
2020/02/16 全球购物
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
门诊手术室工作制度
2014/01/30 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL