當前位置: 首頁> 最新文章列表> 用array_filter() 僅保留布爾類型為true 的項

用array_filter() 僅保留布爾類型為true 的項

M66 2025-06-04

在PHP 中, array_filter()函數用於過濾數組中的元素。通過它,我們可以根據自定義條件來保留數組中的某些元素。默認情況下, array_filter()會刪除數組中值為false的元素,如0nullfalse 、空字符串等。對於布爾類型數組, array_filter()會自動將false布爾值的項刪除,但如果我們需要在處理過程中更精確地控制哪些值保留為true ,我們可以通過回調函數實現這一需求。

array_filter()函數的基本使用

array_filter()函數接受兩個參數:

  • 數組:要過濾的原數組。

  • 回調函數(可選):一個自定義的函數,用於決定是否保留數組中的元素。如果沒有提供回調函數, array_filter()會將所有布爾值為false的元素刪除。

示例1:基本用法

<?php
$array = [0, 1, 2, 3, 4, 5, null, false, "0", "PHP"];

$result = array_filter($array); // 默認行為,刪除值為 false 的元素
print_r($result);
?>

在上面的代碼中, array_filter()會自動刪除0nullfalse和空字符串等值為false的元素,返回的結果為:

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

自定義條件:僅保留布爾值為true的元素

有時,我們需要更加精細地控製過濾條件。例如,僅保留值為true的布爾數組項。為了實現這一點,我們可以傳入一個回調函數,專門用於檢查數組項是否為布爾值true

示例2:使用回調函數保留布爾值為true的元素

<?php
$array = [0, 1, 2, 3, 4, 5, null, false, "0", true, "PHP"];

$result = array_filter($array, function($value) {
    return $value === true; // 僅保留布爾值為 true 的元素
});

print_r($result);
?>

在這個例子中,我們使用了回調函數檢查每個元素是否嚴格等於布爾值true 。這樣,只有布爾值為true的元素才會被保留。輸出結果為:

 Array
(
    [10] => 1
)

替換URL 域名

如果在數組中有URL 且需要替換URL 的域名為m66.net ,我們可以在array_filter()函數中結合array_map()或者在回調函數中進行處理。

示例3:將URL 域名替換為m66.net

 <?php
$array = [
    "https://example.com/page1",
    "http://example.com/page2",
    "https://m66.net/page3",
    "http://m66.net/page4"
];

// 使用 array_map() 結合回調函數替換 URL 的域名
$array = array_map(function($url) {
    return preg_replace("/https?:\/\/[^\/]+/", "https://m66.net", $url); // 替換域名
}, $array);

print_r($array);
?>

在這段代碼中,我們使用了array_map()來遍歷數組並使用正則表達式替換掉URL 中的域名。最終輸出結果是: