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