PHP 中的 array_count_values() 函數(shù)可以實(shí)現(xiàn)
創(chuàng)新互聯(lián)建站企業(yè)建站,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁中充分展現(xiàn),通過對(duì)客戶行業(yè)精準(zhǔn)市場調(diào)研,為客戶提供的解決方案。
array_count_values() 函數(shù)用于統(tǒng)計(jì)數(shù)組中所有值出現(xiàn)的次數(shù)。
本函數(shù)返回一個(gè)數(shù)組,其元素的鍵名是原數(shù)組的值,鍵值是該值在原數(shù)組中出現(xiàn)的次數(shù)。
array_count_values(array)
例如:
?php
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));
?
輸出:
Array ( [Cat] = 1 [Dog] = 2 [Horse] = 1 )
1.首先,題主應(yīng)該選一個(gè)相似度的計(jì)算維度,比如content字段,type字段等;
2.其次,題主考慮一下各個(gè)字段的權(quán)重,比如type字段必須相同,則讓type字段使用typeWeight(例如賦值0.8)作為乘積的因子,而content字段本身是比較長的,所以需要計(jì)算出一個(gè)hash值,比如使用特定算法計(jì)算出一個(gè)hash值,然后把這個(gè)hash值按照16進(jìn)制計(jì)算得到10進(jìn)制數(shù),再給一個(gè)權(quán)重contentWeight(例如0.2),另外再選取一個(gè)字段,比如description描述字段,再給一個(gè)權(quán)重descriptionWeight...
3.最后得到一個(gè)當(dāng)前插入到表中的記錄綜合hash,typeWeight(contentHashcontentWeight+descriptionHash*descriptionWeight
+...),可能會(huì)涉及到大整數(shù)計(jì)算,不過PHP有BCMATH擴(kuò)展可以使用,最終得到一個(gè)數(shù)值的綜合hash值,保存到數(shù)據(jù)庫的一個(gè)字段中,這個(gè)東西就可以理解為本條記錄的特征值。
這個(gè)函數(shù)就可以array_unique()
array_unique() 函數(shù)移除數(shù)組中的重復(fù)的值,并返回結(jié)果數(shù)組。
當(dāng)幾個(gè)數(shù)組元素的值相等時(shí),只保留第一個(gè)元素,其他的元素被刪除。
返回的數(shù)組中鍵名不變。
?php
$a=array("a"="Cat","b"="Dog","c"="Cat");
print_r(array_unique($a));
?
輸出:
Array ( [a] = Cat [b] = Dog )
遍歷一次就搞定了
既然你要把單號(hào)相同的加起來,就可以認(rèn)為單號(hào)是唯一的,所以單號(hào)可以做key
$sourceArr?=?array();??//?這里就是你原始數(shù)據(jù)的數(shù)組
$newArr?=?array();??//?這里是相加后處理過的數(shù)組,以單號(hào)為key
foreach?($sourceArr?as?$v)?{
if?(array_key_exists($v['id'],?$newArr))?{
$newArr[$v['id']]['fund']?+=?$v['fund'];
}?else?{
$newArr[$v['id']]?=?$v;
}
}
大概就是這么個(gè)意思,不過交易類型、賬務(wù)類型你可能還要再處理下。
如果最后想得到一個(gè)下標(biāo)從0開始的,非關(guān)聯(lián)數(shù)組,再用array_values()函數(shù)處理下就OK了