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加密解密的代码
Oct 09 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
php全角字符转换为半角函数
Feb 07 PHP
php检测useragent版本示例
Mar 24 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 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替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
php限制ip地址范围的方法
2015/03/31 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
Express之get,pos请求参数的获取
2017/05/02 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
JS实现随机点名器
2020/04/12 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python实现bucket排序算法实例分析
2015/05/04 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
应届毕业生求职信范文
2013/12/18 职场文书
教师求职信范文分享
2013/12/27 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
党员公开承诺书2015
2015/01/21 职场文书
北京天坛导游词
2015/02/12 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python