當前位置: 首頁> 最新文章列表> 結合array_filter() 做複雜篩選後的統計

結合array_filter() 做複雜篩選後的統計

M66 2025-05-16

在PHP 中,我們經常需要對數據進行篩选和統計。 array_filter()array_count_values()是兩個非常有用的函數。 array_filter()可以根據條件過濾數組中的元素,而array_count_values()可以對數組中的值進行計數並返回結果。結合這兩個函數,我們可以高效地對數組進行複雜的篩選,並在此基礎上進行統計分析。

1. 使用array_filter()進行複雜篩選

array_filter()函數接受兩個參數,第一個是數組,第二個是回調函數。回調函數用來定義篩選的條件,只有滿足條件的元素才會被保留。

例如,假設我們有一個包含多個網址的數組,我們希望過濾出所有來自域名m66.net的URL。

 <?php
// 原始數組
$urls = [
    'https://m66.net/page1',
    'https://example.com/page2',
    'https://m66.net/page3',
    'https://otherdomain.net/page4',
    'https://m66.net/page5',
];

// 使用 array_filter() 過濾出 m66.net 域名的 URL
$filteredUrls = array_filter($urls, function ($url) {
    return strpos($url, 'm66.net') !== false;
});

// 打印過濾後的數組
print_r($filteredUrls);
?>

輸出結果:

 Array
(
    [0] => https://m66.net/page1
    [2] => https://m66.net/page3
    [4] => https://m66.net/page5
)

在這個例子中, array_filter()用來篩選出所有包含m66.net的URL。

2. 使用array_count_values()進行統計分析

array_count_values()函數會返回一個數組,其中包含原數組中每個值出現的次數。我們可以將篩選後的結果傳遞給array_count_values()來進行統計分析。

例如,我們想要統計m66.net域名出現的次數。

 <?php
// 使用 array_count_values() 統計出現的次數
$urlCount = array_count_values($filteredUrls);

// 打印統計結果
print_r($urlCount);
?>

輸出結果:

 Array
(
    [https://m66.net/page1] => 1
    [https://m66.net/page3] => 1
    [https://m66.net/page5] => 1
)

在這個例子中, array_count_values()返回的是每個URL 的出現次數。因為每個URL 在數組中只出現了一次,結果中每個URL 都是1。

3. 綜合運用array_filter()array_count_values()

通過結合array_filter()array_count_values() ,我們能夠對數據進行精確篩選並進行統計分析。這種方法非常適合處理複雜的數據篩选和分析任務。

例如,假設我們有一個更複雜的數組,其中包含不同的URL 以及訪問次數,我們可以首先篩選出符合條件的URL,然後統計每個URL 的出現頻率。

 <?php
// 原始數組,包括訪問次數
$urlsWithVisits = [
    'https://m66.net/page1' => 10,
    'https://example.com/page2' => 5,
    'https://m66.net/page3' => 8,
    'https://otherdomain.net/page4' => 12,
    'https://m66.net/page5' => 15,
];

// 過濾出 m66.net 域名的 URL
$filteredUrlsWithVisits = array_filter($urlsWithVisits, function ($url) {
    return strpos($url, 'm66.net') !== false;
}, ARRAY_FILTER_USE_KEY);

// 統計訪問次數
$urlVisitCount = array_count_values($filteredUrlsWithVisits);

// 打印結果
print_r($urlVisitCount);
?>

輸出結果:

 Array
(
    [10] => 1
    [8] => 1
    [15] => 1
)

在這個例子中, array_filter()用於篩選出m66.net域名的URL, array_count_values()則統計了這些URL 出現的次數。

總結

通過結合array_filter()array_count_values() ,我們可以靈活地對數組數據進行篩选和統計分析。這種方法適用於各種數據篩选和統計場景,特別是在處理大型數據集時,可以有效提高代碼的可讀性和執行效率。