當前位置: 首頁> 最新文章列表> 為什麼布爾值和NULL 不會被統計?

為什麼布爾值和NULL 不會被統計?

M66 2025-06-07

array_count_values是PHP 中非常實用的一個函數,它用於統計數組中所有值出現的次數。這個函數返回一個關聯數組,其中數組的鍵是原數組中的值,而數組的值則是這些值在原數組中出現的次數。

然而,有時候在使用array_count_values時,你可能會發現布爾值( truefalse )和NULL並沒有出現在統計結果中。這是為什麼呢?今天我們就來分析一下。

1. array_count_values函數簡介

首先,我們先回顧一下array_count_values函數的基本用法。該函數接受一個數組作為參數,並返回一個新的數組,統計數組中每個元素出現的次數。例如:

 $arr = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
$result = array_count_values($arr);
print_r($result);

輸出結果將是:

 Array
(
    [apple] => 2
    [banana] => 3
    [orange] => 1
)

2. 布爾值和NULL被忽略的原因

接下來,我們分析為什麼布爾值和NULL會被忽略。

布爾值

在PHP 中,布爾值truefalse會被轉換成整數值10 ,在array_count_values函數中,布爾值會被認為是相同的值。具體來說, truefalse會被視作相同的10 ,而array_count_values在處理數組時會將它們合併。因此,如果數組中有多個布爾值,它們的出現次數會被合併到對應的整數值上,而不是單獨統計布爾值。

 $arr = [true, false, true, 1, 0];
$result = array_count_values($arr);
print_r($result);

輸出結果將是:

 Array
(
    [1] => 3
    [0] => 2
)

你可以看到, true1被合併成了1 ,而false0被合併成了0 ,所以布爾值並沒有單獨被統計。

NULL

對於NULL值,PHP 在處理數組時也有一個特殊的行為。當使用array_count_values時, NULL會被忽略掉,因為它在PHP 中通常被視作“空值”。如果你需要統計NULL的出現次數,可以考慮先將其轉換為其他值,或者通過其他方式進行處理。

例如,考慮以下代碼:

 $arr = [NULL, 'apple', NULL, 'banana', 'apple'];
$result = array_count_values($arr);
print_r($result);

輸出結果將是:

 Array
(
    [apple] => 2
    [banana] => 1
)

你可以看到, NULL並沒有出現在結果中。為了解決這個問題,你可以在調用array_count_values之前,將所有的NULL值替換成某個特定的值,比如'NULL' ,然後再進行統計。

 $arr = [NULL, 'apple', NULL, 'banana', 'apple'];
$arr = array_map(function($value) {
    return $value === NULL ? 'NULL' : $value;
}, $arr);
$result = array_count_values($arr);
print_r($result);

輸出結果將是:

 Array
(
    [NULL] => 2
    [apple] => 2
    [banana] => 1
)

這樣,你就可以在統計時包含NULL值了。

3. 總結

array_count_values是一個非常方便的函數,用於統計數組中每個值的出現次數。然而,由於PHP 中的布爾值和NULL值在處理時有特殊的轉換和忽略行為,導致它們不會被單獨統計。如果需要處理這些特殊情況,可以在調用array_count_values前,手動替換這些值,或者進行類型轉換,以確保它們能夠被正確統計。

尾部內容: