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

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

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

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

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 实现浏览记录并按日期分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-19 08:29:39

PHP 实现浏览记录并按日期分组的相关文章

苹果iCloud新漏洞:删了一年的网页浏览记录照样可以恢复

苹果似乎已经修复了iCloud的一项漏洞,而在此之前,该服务会将通过已经删除的Safari浏览记录保留一年多时间. 本周四,俄罗斯计算机取证软件公司Elcomsoft表示,该公司的取证软件可以恢复在iCloud中存储并且已经删除的历史记录,包括某个网址上一次的访问日期以及删除时间. Elcomsoft CEO弗拉基米尔·卡塔洛夫(Vladimir Katalov)在博客中强调了浏览数据的取证价值.由于iCloud会持续同步信息,所以如果用户开启该功能,便可给监视和调查工作带来很大帮助. 就在El

Archify:网页浏览记录云存储 可记录社交更新

北京时间2月6日消息,<移动新发现>今日报道,一家来自奥地利的初创公司正在开发一款名为Archify的浏览器插件,它可以记录用户浏览过的全部网页内容(包括Facebook和Twitter上的更新)并留下截屏存档,从而方便用户日后查找与回顾. Archify已进入封闭测试阶段,预计将于2012年3月下旬正式面世,目前只有收到邀请的人才能试用. 帐户设置:可关闭与社交媒体的连接 用户激活自己的帐户之后,浏览器会自动检测出Archify插件并提示用户安装.它适用于所有主流浏览器,包括Firefox.

数据-java mysql 按日期分组查询

问题描述 java mysql 按日期分组查询 如在mysql中有张表user 有三条数据 注册时间分别是是2014-11-28,2014-11-28,2014-11-29 那我要怎么分组查询出2014-11-01到2014-11-30的数据,空的也显示 要显示成 count time . . . . 0 2014-11-26 0 2014-11-27 2 2014-11-28 1 2014-11-29 0 2014-11-30 或者在java里面怎么补全 解决方案 告诉你思路,自己写,mysq

360安全浏览器如何启用无痕模式不让他人看到浏览记录

360安全浏览器使用无痕模式的方法如下: 当在公用电脑上上网或者使用自己的电脑也不愿被别人看到自己的浏览记录时,就可以使用我们的无痕浏览.在无痕浏览的时候,不仅您的浏览历史记录不会被保存,Internet临时文件.输入网址记录以及恢复列表项等数据在浏览器关闭后都将荡然无存.无痕浏览可以全面保证隐私不被泄露. 开启与关闭 开启:点击菜单栏的"文件"按钮,选择"新建无痕浏览窗口"即可. 关闭:点击菜单栏的"文件"按钮,选择"退出窗口&quo

windows 7如何不产生本地文件浏览记录

第一步:打开注册表,在开始搜索框中输入"regedit" 第二步:在打开的注册表中搜索"TypedPaths",按"Ctrl+F"搜索,当然也可以一个一个去找"HKEY_CURRENT_USER"-"Software"-"Microsoft"-" Windows"-" CurrentVersion"-" Explorer"-&q

基于用户浏览记录的网页rank思路

  Google的pagerank就不多介绍了,一个能衡量网页重要程度的算法,本质上是网页相互投票的结果,基于这个特性,我们可以通过使用sitemap让搜索引擎尽可能浏览到多的网站内容,也可以通过多做外链来提高网站的PR值,达到SEO的目的. 市场上大多数搜索引擎都在使用pagerank类似的方法,且为了保证公正性,都采用纯机器运行的方式,通过网页爬虫来遍历网站,这就出现了一些有趣的问题: 1.一个网页的内容是很棒的,但是由于外链太少,爬虫在设定的深度阈值下可能无法爬到它,成为了少人问津的"暗内

如何在IE9浏览器中显示更多的浏览记录

  怎样才能在地址栏上显示更多的浏览记录呢?小编立刻来教你. 1.打开右上角的"设置",然后打开"Internet选项" 2.在"Internet选项"中点开"内容"的选项,在"自动完成"的栏目上点击设置 3.然后把"浏览历史记录"和"收藏夹"两项勾选掉即可

IE9浏览器显示更多浏览记录小技巧

在此前的IE版本或者其他浏览器中,点击地址栏下拉框可以看到很多条浏览过的网址记录,这样在下次需要浏览的时候查找起来很是方便.不过很多习惯使用IE的用户发现,IE9中最多只能显示5-7条网址记录,更多的浏览记录需要到历史记录中进行查找,比较麻烦.事实上,只要在IE9中做一个小设置就能看到更多网址条目,这样就方便多了. 默认设置下,IE9只能显示5-7条网址记录. 点击右上角的设置,找到"Internet选项". 选择"内容"标签,在自动完成项目中点击"设置&

IE9浏览器怎么显示更多的浏览记录

  怎样才能在地址栏上显示更多的浏览记录呢? 1.打开右上角的"设置",然后打开"Internet选项" 2.在"Internet选项"中点开"内容"的选项,在"自动完成"的栏目上点击设置 3.然后把"浏览历史记录"和"收藏夹"两项勾选掉即可