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.ini修改php上传文件大小限制的方法详解
Jun 17 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
在 Laravel 项目中使用 webpack-encore的方法
Jul 21 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 28 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
js有序数组的连接问题
2013/10/01 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python Series从0开始索引的方法
2018/11/06 Python
python3实现点餐系统
2019/01/24 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
python支付宝支付示例详解
2019/08/22 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
建议书怎么写
2014/03/12 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
董事长开业致辞
2015/07/29 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
MySQL Router的安装部署
2021/04/24 MySQL