PHP 实现浏览记录并按日期分组

转载 2018年04月16日 12:58:33

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

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:


/* 浏览记录按日期分组 */
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 就是上面一开始的测试数据,函数中还对用户体验做了一些优化,比如,你的浏览记录中总是显示出今年的年份,是不是感觉有点冗余,所以如果是本年份的话,年份就要隐藏起来,其他年份还是照样显示出来。不然代码会更加简洁。

好了上面的测试数据经过该函数之后,再把返回值打印出来,有:


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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 实现浏览记录并按日期分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!


WinCVS与CVSNT简明使用手则(二)

3    服务器端(CVSNT)的安装与配置:3.1    服务器端机器和环境配置:1.         操作系统:Windows 2000 Professional SP2中文版2.        ...
  • ycw
  • ycw
  • 2003-07-18 07:04:00
  • 7005

php实现「浏览记录」按日期分组

现有测试数据如下,要求实现如下图中的效果: array(4) { [0] => array(6) { ["visit_id"] => int(127) ["goods_id"...
  • e62ces0iem
  • e62ces0iem
  • 2017-06-08 21:30:48
  • 521

php 浏览记录功能

/** * 历史浏览记录 * $data array 浏览记录里作品的必要信息 */ private function _history($data){ ...
  • benpaodelulu_guajian
  • benpaodelulu_guajian
  • 2017-08-24 17:27:41
  • 246

PHP实现将浏览历史页面

这篇文章主要介绍了PHP实现将浏览历史页面网址保存到cookie的方法,涉及php对cookie的读取、字符串转化及保存等技巧,需要的朋友可以参考下 本文实例讲述了PHP实现将浏览历史页...
  • index_ling
  • index_ling
  • 2016-12-14 20:41:09
  • 1453

商城产品浏览记录,看了又看一种实现思路

商城产品浏览记录,看了又看一种实现思路 很直白的思路。
  • m0sh1
  • m0sh1
  • 2017-02-22 15:32:39
  • 995

PHP数据库统计时间戳按天分组输出数据

PHP数据库统计时间戳按天分组输出数据
  • mxdzchallpp
  • mxdzchallpp
  • 2015-12-17 16:31:02
  • 5234

利用cookie来做个浏览历史记录的案例

知识点cookie/**** 利用cookie来做个浏览历史记录的案例 注意:cookie只能存储字符串 数字不能存储数组,资源等多维数据 ****/ $uri = $_SERVER['REQUE...
  • u013927034
  • u013927034
  • 2016-10-02 22:41:34
  • 2291

实践 商城商品页 浏览历史记录功能

创建cookie我直接就写在了 V上 //历史浏览记录 $id = $_SERVER['QUERY_STRING']; //获取地址栏上商品id路径 ...
  • u013927034
  • u013927034
  • 2016-10-10 21:47:12
  • 813

分组查询取最大时间记录的多种方式

sql语句: create table dispatch_result ( dr_id number not ...
  • hanzhou4519
  • hanzhou4519
  • 2012-08-15 13:11:05
  • 3305

PHP 记录访客的浏览信息

可以记录访客的地理位置,操作系统,浏览器,IP,时间和访问的文件。 1.首先创建一个comm_function.php文件: ...
  • chWow
  • chWow
  • 2017-06-23 15:00:41
  • 1718
收藏助手
不良信息举报
您举报文章:PHP 实现浏览记录并按日期分组
举报原因:
原因补充:

(最多只允许输入30个字)