簡體   English   中英

獲取PHP數組中不同值的數量

[英]Getting the number of different values in a PHP array

我需要知道數組中不同值的數量。 例如,如果包含(5,5,5),那么我應該得到1。如果包含(4,4,2,2),我應該得到2。如果(5,5,5,5,2,2,1 ,5)然后3。

有沒有可以直接在PHP中實現的功能?

echo count(array_unique($arr));

您可以使用array_unique返回數組的唯一元素(結果也是數組類型),然后count結果

實現此目的的兩種簡單方法:

  • $diff_count = count(array_unique($input_arr));
  • $diff_count = count(array_flip($input_arr)); <-推薦(性能)

array_unique()

從數組中刪除重復的值-您可以添加adittional標志,例如:

  • SORT_REGULAR-正常比較項目(不要更改類型)
  • SORT_NUMERIC-數字比較項目
  • SORT_STRING-比較項目為字符串
  • SORT_LOCALE_STRING-根據當前語言環境將項目作為字符串進行比較。

array_flip()

在數組中交換所有鍵及其關聯的值-因此重復的鍵將被覆蓋,您將獲得一個以唯一值作為鍵的最終數組。

翻轉兩次將產生一個具有唯一值和原始輸入數組中最高鍵的數組。

更多閱讀

基准測試

由於array_flip僅使用O(n)的速度快得多-使用10,000個數字的數組作為輸入:

  • array_unique +計數:〜28.615毫秒。
  • array_flip +計數:〜0.5012毫秒。 獲獎者

有沒有可以直接在PHP中實現的功能?

最接近的是array_unique()但這是一個簡單的函數,可以實現您所需要的:

$arr = array(5,5,5,5,2,2,1,5);

function array_diff_values( $array ) {
    return count( array_unique($array) );
}

$count = array_diff_values( $arr );

$count結果是3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM