这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于web开发领域。PHP的文件后缀名为php。
这篇文章主要介绍了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 实现浏览记录并按日期分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHPERZ网站的支持!
来源: http://www.phperz.com/article/17/0830/339867.html