在PHP 中, array_filter()函數用於過濾數組中的元素,根據指定的回調函數來判斷是否保留該元素。如果沒有指定回調函數, array_filter()將使用默認的回調函數來過濾數組,這個默認的回調函數會刪除那些被認為是“假值”的元素。 PHP 中的“假值”包括: false 、 null 、 0 、 "" (空字符串)、 array() (空數組)以及0.0 。
因此,當你在PHP 中使用array_filter()時,如果數組中的元素值為0 ,它會被認為是一個假值,並被刪除。為了更好地理解這個問題,我們可以通過一個具體的例子來展示array_filter()的行為。
<?php
$array = [0, 1, 2, 3, 0, 4, 5, 0];
$filtered = array_filter($array);
print_r($filtered);
?>
輸出:
Array
(
[1] => 1
[2] => 2
[3] => 3
[5] => 4
[6] => 5
)
在上面的代碼中,我們創建了一個包含多個整數的數組,包含了幾個0元素。當我們使用array_filter()時,所有值為0的元素被刪除,因為0被認為是一個假值。
這是因為array_filter()函數的默認行為是將所有被認為是“假值”的元素從數組中移除。 PHP 的類型轉換規則決定了0是一個假值。具體來說, 0被轉換為false ,而false會導致array_filter()刪除該元素。
如果你希望保留值為0的元素,可以通過提供一個自定義的回調函數來實現。例如:
<?php
$array = [0, 1, 2, 3, 0, 4, 5, 0];
$filtered = array_filter($array, function($value) {
return $value === 0 || $value > 0;
});
print_r($filtered);
?>
輸出:
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[5] => 4
[6] => 5
[7] => 0
)
在這個例子中,我們通過自定義回調函數來確保值為0的元素被保留下來,而其他的元素則根據我們的邏輯進行過濾。
使用array_filter()時,值為0的元素會被刪除,因為PHP 將0視為假值。在沒有提供回調函數的情況下, array_filter()會自動刪除這些假值。如果你需要保留0或其他特定的值,可以提供一個自定義的回調函數來控製過濾的行為。