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 print类函数使用总结
Jun 25 PHP
mac下使用brew配置环境的步骤分享
May 23 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
May 24 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
Laravel中的Auth模块详解
Aug 17 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 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面向对象程序设计之类常量用法实例
2014/08/20 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
简述Python2与Python3的不同点
2018/01/21 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
中专生毕业自我鉴定
2013/11/01 职场文书
全神贯注教学反思
2014/02/03 职场文书
开业庆典主持词
2014/03/21 职场文书
《秋游》教学反思
2014/04/24 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
2015年幼师工作总结
2015/04/28 职场文书
指导老师鉴定意见
2015/06/05 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python