當前位置: 首頁> 最新文章列表> 如果在array_filter() 中回調函數沒有參數,它的默認行為是什麼?

如果在array_filter() 中回調函數沒有參數,它的默認行為是什麼?

M66 2025-06-05

在PHP 中, array_filter()是一個非常常用的數組處理函數,它用於過濾數組中的元素。 array_filter()函數可以接受兩個參數,第一個參數是數組,第二個是回調函數(可選)。如果沒有提供回調函數,則會使用默認行為。

array_filter()函數的語法

array_filter(array $array, callable $callback = null, int $mode = 0): array
  • $array :待處理的數組。

  • $callback :用於每個數組元素的回調函數。回調函數必須返回truefalse ,決定該元素是否保留。

  • $mode :可選參數,用來指定過濾方式,默認值為0

當沒有提供回調函數時, array_filter()會使用默認行為。

默認行為:刪除所有假值(falsy values)

如果array_filter()沒有接收到回調函數,那麼它會自動使用一個默認的過濾行為:刪除數組中所有“假值”。在PHP 中,“假值”包括以下幾種:

  • false

  • null

  • 0 (整數0)

  • 0.0 (浮點數0)

  • '' (空字符串)

  • '0' (字符串'0')

  • 空數組

任何這些假值都會被從數組中移除,只有那些被認為是真值的元素會被保留下來。

示例

假設你有一個數組,如下所示:

 $array = [0, 1, false, 2, null, 3, '', '0', 4];

如果我們調用array_filter() ,而沒有傳入回調函數:

 $result = array_filter($array);
print_r($result);

輸出將是:

 Array
(
    [1] => 1
    [3] => 2
    [5] => 3
    [8] => 4
)

可以看到,所有的“假值”都被移除了,數組中只剩下了有效的元素。

使用場景

這種默認行為非常有用,尤其是在處理需要去除無效數據的數組時。例如,假設你從用戶表單中獲取到一些數據,可能包含了空值、0、或者null 。使用array_filter()默認行為可以快速地清除掉這些無效數據,保留有效的值。

總結

  • array_filter()沒有提供回調函數時,它默認會移除數組中的“假值”。

  • 這種默認行為可以幫助開發者輕鬆地過濾掉不必要的數據,尤其在處理不完整或者無效的輸入時非常有用。

其他注意事項:

  • 如果你希望根據自定義的規則來過濾數組,你可以傳入一個回調函數,而不是依賴默認行為。

  • 你也可以使用ARRAY_FILTER_USE_KEYARRAY_FILTER_USE_BOTH參數,來在回調函數中同時訪問數組的鍵和值。