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 socke 向指定页面提交数据
Jul 23 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
php简单生成随机数的方法
Jul 30 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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 中的str_replace 函数总结
2007/04/27 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
JS的replace方法介绍
2012/10/20 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
node.js express框架简介与实现
2019/07/23 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
python requests指定出口ip的例子
2019/07/25 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
如何基于线程池提升request模块效率
2020/04/18 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
银行门卫岗位职责
2013/12/29 职场文书
自我评价如何写好?
2014/01/05 职场文书
工作失职检讨书范文
2014/01/16 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
毕业设计致谢词
2015/05/14 职场文书