在PHP 中,我們經常需要對數據進行篩选和統計。 array_filter()和array_count_values()是兩個非常有用的函數。 array_filter()可以根據條件過濾數組中的元素,而array_count_values()可以對數組中的值進行計數並返回結果。結合這兩個函數,我們可以高效地對數組進行複雜的篩選,並在此基礎上進行統計分析。
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。
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。
通過結合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() ,我們可以靈活地對數組數據進行篩选和統計分析。這種方法適用於各種數據篩选和統計場景,特別是在處理大型數據集時,可以有效提高代碼的可讀性和執行效率。