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 相关文章推荐
我的群发邮件程序
Oct 09 PHP
在PHP中使用模板的方法
May 24 PHP
PHP 写文本日志实现代码
May 18 PHP
PHP 解决session死锁的方法
Jun 20 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
PHP6新特性分析
Mar 03 PHP
学习PHP Cookie处理函数
Aug 09 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
php注册登录系统简化版
2020/12/28 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
详解Python 函数参数的拆解
2020/09/02 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
opencv实现图像几何变换
2021/03/24 Python
质检的岗位职责
2013/11/17 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
大学生社会实践方案
2014/05/11 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
python tkinter模块的简单使用
2021/04/07 Python
Java tomcat手动配置servlet详解
2021/11/27 Java/Android