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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 PHP
php格式文件打开的四种方法
Feb 24 PHP
总结PHP代码规范、流程规范、git规范
Jun 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Django开发中复选框用法示例
2018/03/20 Python
python实现扫描日志关键字的示例
2018/04/28 Python
对Python 数组的切片操作详解
2018/07/02 Python
python矩阵的转置和逆转实例
2018/12/12 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
学校三八妇女节活动情况总结
2014/03/09 职场文书
政府信息公开实施方案
2014/05/09 职场文书
建筑节能汇报材料
2014/08/22 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
SQL Server内存机制浅探
2022/04/06 SQL Server
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript