PHP 中实现浏览记录并按日期分组的实例代码

作者:袖梨 2022-06-24

现有测试数据如下,要求实现如下图中的效果:

 

 代码如下复制代码

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"

 }

}

 

还没实现之前我想这个代码不知道要O(n)呢还是更高的复杂度才能实现,细想一下,其实php的数组底层就是哈希实现的,如何简单利用这个特性使复杂度降到O(1)呢?

 

 代码如下复制代码

show me the code:

/* 浏览记录按日期分组 */

functiongroupVisit($visit)

{

 $curyear=date('Y');

 $visit_list= [];

 foreach($visitas$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 实现浏览记录并按日期分组,希望对大家有所帮助。在此也非常感谢大家对本网站的支持!

相关文章

精彩推荐