PHP程序員都知道,在日常的開發中經常要使用數組(array)這個數據類型。而數組中一個非常實用的函數是array_count_values,可以統計每個值在數組中出現的次數。
我們來看一個例子:
$arr = array(1,2,3,2,2,3,4,5,3); $counts = array_count_values($arr); print_r($counts);
在這個例子中,我們先定義了一個數組$arr,然后調用array_count_values函數,并將結果賦值給變量$counts,最后將$counts打印出來。
運行這段代碼,你會得到下面的結果:
Array ( [1] =>1 [2] =>3 [3] =>3 [4] =>1 [5] =>1 )
結果說明了$arr數組中1出現了1次,2出現了3次,3出現了3次,4和5分別只出現了1次。
這個函數非常實用,比如你想要知道一篇文章中最常見的10個單詞是哪些,或者你想要知道一張圖片中像素點最多的顏色是哪個,都可以使用這個函數。
當然,如果你想要對一個關聯數組進行統計,也是可以的。不同之處在于,返回的結果不再是一個簡單的數組,而是一個關聯數組,鍵為原數組中的值,值為該值在原數組中出現的次數。
我們看下面這個例子:
$arr = array( "apple" =>3, "banana" =>2, "orange" =>2, "pear" =>1, ); $counts = array_count_values($arr); print_r($counts);
在這個例子中,我們定義了一個關聯數組$arr,然后調用array_count_values函數,并將結果賦值給變量$counts,最后將$counts打印出來。
運行這段代碼,你會得到下面的結果:
Array ( [3] =>1 [2] =>2 [1] =>1 )
結果說明了3出現了1次,2出現了2次,1出現了1次。這個結果可以幫助我們更清楚地了解原數組中各個鍵值的出現情況。
需要注意的是,array_count_values函數對于傳入的數組中的每個元素,都會進行強制類型轉換。也就是說,如果數組中包含了字符串、浮點數等元素,他們都會被轉換為整數,再進行統計。
最后,再來看一些小技巧。如果你想要通過統計結果,將原數組中的某些元素過濾掉,你可以先調用array_count_values函數,然后將結果中次數等于1的元素去掉,再用array_diff_key函數將結果中的鍵與原數組的鍵進行比較,即可得到需要保留的元素。
我們來看下面這個例子:
$arr = array(1,2,3,2,2,3,4,5,3); $counts = array_count_values($arr); $counts = array_filter($counts, function($count) { return $count != 1; }); $keys = array_keys($counts); $res = array_intersect_key($arr, array_flip($keys)); print_r($res);
運行這段代碼,你會得到下面的結果:
Array ( [1] =>2 [2] =>2 [3] =>3 )
我們先使用array_count_values函數統計出來各個元素出現的次數,然后使用array_filter函數將統計結果中次數等于1的元素去掉,接著用array_keys函數取出剩下的鍵,再用array_intersect_key函數將鍵與原數組鍵進行比較,即可得到需要保留的元素。
以上就是有關array_count_values函數的相關介紹和應用技巧,希望對你的開發工作有所幫助!