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 相关文章推荐
ezSQL PHP数据库操作类库
May 16 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
php定界符
Jun 19 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
php自动获取关键字的方法
Jan 06 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
php字符集转换
Jan 23 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
PHP执行系统命令函数实例讲解
Mar 03 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
第二节 对象模型 [2]
2006/10/09 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
深入理解javaScript中的事件驱动
2013/05/21 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
12个非常有用的JavaScript技巧
2017/05/17 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
利用Python爬取可用的代理IP
2016/08/18 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python运算符重载详解及实例代码
2017/03/07 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Selenium的使用详解
2018/10/19 Python
python实现flappy bird小游戏
2018/12/24 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
自荐信如何制作?
2014/02/21 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
搭建Yolov5服务器
2022/04/30 Servers