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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
利用 window_onload 实现select默认选择
Oct 09 PHP
中国站长站 For Dede4.0 采集规则
May 27 PHP
php at(@)符号的用法简介
Jul 11 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
PHP实现用session来实现记录用户登陆信息
Oct 15 PHP
Laravel如何实现自动加载类
Oct 14 PHP
thinkphp5 路由分发原理
Mar 18 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
PHP文件上传原理简单分析
2011/05/29 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
javascript实现动态标签云
2015/10/16 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
奥巴马演讲稿
2014/01/08 职场文书
志愿者活动总结
2014/04/28 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
2014年部门工作总结
2014/11/12 职场文书
2015学校年度工作总结
2015/05/11 职场文书
李强优秀员工观后感
2015/06/16 职场文书
gojs实现蚂蚁线动画效果
2022/02/18 Javascript