在PHP 中, array_filter()是一個非常實用的函數,它可以用來自定義篩選數組中的元素。通過傳入一個回調函數,我們可以根據特定的邏輯條件來保留或移除數組中的元素。在本文中,我們將介紹如何使用array_filter()篩選出數組中。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$array :需要被過濾的原始數組。
$callback :用於判斷每個元素是否保留的回調函數,返回true表示保留, false表示剔除。
$mode :可選參數,用於控制傳入回調函數的參數(鍵、值或鍵值對)。
如果沒有提供$callback ,默認會過濾掉值為false的元素(例如0 、空字符串、 null等)。
假設我們有一個數組,其中包含各種類型的數據,比如字符串、浮點數、布爾值和整數。我們希望只保留整數。
<?php
$data = [1, '2', 3.5, 4, 'hello', true, 0, null, 7, '8'];
$integers = array_filter($data, function ($item) {
return is_int($item);
});
print_r($integers);
?>
Array
(
[0] => 1
[3] => 4
[8] => 7
)
可以看到,數組中只有真正的整數被保留下來了,而像'2' (字符串)或3.5 (浮點數)都被過濾掉了。
默認情況下, array_filter()會保留原數組的鍵索引。如果你想重新索引,可以使用array_values() :
$integers = array_values(array_filter($data, function ($item) {
return is_int($item);
}));
這種過濾方式在實際開發中非常有用。例如,你從用戶輸入或遠程API 獲取到一個混合數據數組,需要對其進行類型驗證或數據清洗時,可以使用array_filter()快速處理。
比如:
// 模擬從遠程接口獲取到的數據
$response = json_decode(file_get_contents("https://api.m66.net/data"), true);
$cleaned = array_filter($response['values'], function ($value) {
return is_int($value);
});
這段代碼中,我們從https://api.m66.net/data獲取到數據後,使用array_filter()把非整數值都剔除了。
array_filter()是PHP 中一個功能強大的數組處理函數,配合回調函數可以實現各種自定義篩選邏輯。通過它,我們可以方便地從數組中提取出需要的元素,比如整數、字符串或者符合特定規則的數據。
記住,配合is_int()這樣的內置類型檢測函數使用,可以讓你的數據更乾淨、更可靠,也讓代碼更加優雅。
如果你有更多處理數組的需求, array_map() 、 array_reduce()這些函數也是很值得一試的利器!