PHP 實(shí)現(xiàn)瀏覽記錄并按日期分組
現(xiàn)有測(cè)試數(shù)據(jù)如下,要求實(shí)現(xiàn)如下圖中的效果:
array(4) {
[0] => array(6) {
["visit_id"] => int(127)
["goods_id"] => int(16)
["visittime"] => int(1494399935)
["goods_name"] => string(53) "OPPO R9s 全網(wǎng)通4G+64G 雙卡雙待手機(jī) 玫瑰金"
["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雙開門家用對(duì)開門電冰箱變頻旗艦款"
["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個(gè)月適用)900g(歐洲進(jìn)口)"
["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"
}
}

還沒實(shí)現(xiàn)之前我想這個(gè)代碼不知道要O(n)呢還是更高的復(fù)雜度才能實(shí)現(xiàn),細(xì)想一下,其實(shí)php的數(shù)組底層就是哈希實(shí)現(xiàn)的,如何簡(jiǎn)單利用這個(gè)特性使復(fù)雜度降到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;
}
說明:入?yún)?$visit 就是上面一開始的測(cè)試數(shù)據(jù),函數(shù)中還對(duì)用戶體驗(yàn)做了一些優(yōu)化,比如,你的瀏覽記錄中總是顯示出今年的年份,是不是感覺有點(diǎn)冗余,所以如果是本年份的話,年份就要隱藏起來,其他年份還是照樣顯示出來。不然代碼會(huì)更加簡(jiǎn)潔。
好了上面的測(cè)試數(shù)據(jù)經(jīng)過該函數(shù)之后,再把返回值打印出來,有:
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 全網(wǎng)通4G+64G 雙卡雙待手機(jī) 玫瑰金"
["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雙開門家用對(duì)開門電冰箱變頻旗艦款"
["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個(gè)月適用)900g(歐洲進(jìn)口)"
["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"
}
}
}
對(duì)的,這正是我想要的效果。
以上所述是小編給大家介紹的PHP 實(shí)現(xiàn)瀏覽記錄并按日期分組,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
php不使用插件導(dǎo)出excel的簡(jiǎn)單方法
這篇文章主要介紹了php不使用插件導(dǎo)出excel的簡(jiǎn)單方法,首先獲取需要導(dǎo)出的數(shù)據(jù)的數(shù)組,數(shù)組的格式在下面。之后就是定義文件名稱和需要導(dǎo)出的excel的樣式,最后就是循環(huán)數(shù)組,輸出數(shù)據(jù)了2014-03-03
ThinkPHP中create()方法自動(dòng)驗(yàn)證實(shí)例
下面小編就為大家?guī)硪黄猅hinkPHP中create()方法自動(dòng)驗(yàn)證實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
PHP表單數(shù)據(jù)寫入MySQL數(shù)據(jù)庫(kù)的代碼
這篇文章主要介紹了PHP表單數(shù)據(jù)寫入MySQL數(shù)據(jù)庫(kù)的相關(guān)資料非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
簡(jiǎn)單PHP會(huì)話(session)說明介紹
下面小編就為大家?guī)硪黄?jiǎn)單PHP會(huì)話(session)說明介紹。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
淺談PHP中new self()和new static()的區(qū)別
本篇文章主要介紹了淺談PHP中new self()和new static()的區(qū)別 ,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
laravel 實(shí)現(xiàn)登陸后返回登陸前的頁(yè)面方法
今天小編就為大家分享一篇laravel 實(shí)現(xiàn)登陸后返回登陸前的頁(yè)面方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
CodeIgniter分頁(yè)類pagination使用方法示例
這篇文章主要介紹了CodeIgniter分頁(yè)類pagination使用方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了CodeIgniter框架中的分頁(yè)類pagination基本的配置與使用技巧,需要的朋友可以參考下2016-03-03

