在PHP 中,處理數據清洗和頻次統計是常見的需求。我們可以通過array_filter()清洗數據,去除不符合條件的元素,接著使用array_count_values()統計清洗後數據中各個元素的頻次。下面我們將通過具體示例來演示如何實現這一過程。
array_filter()函數可以根據回調函數的條件過濾數組中的元素,返回一個包含所有滿足條件元素的新數組。例如,我們可以使用該函數過濾掉數組中值為null或false的元素,或者根據某些其他條件篩選出符合條件的數據。
<?php
$data = [1, 2, 3, null, 4, false, 5, 6, '', 7];
// 使用 array_filter() 清洗數據,去除 null 和 false
$cleanedData = array_filter($data, function($value) {
return $value !== null && $value !== false && $value !== '';
});
// 打印清洗後的數據
print_r($cleanedData);
?>
輸出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[4] => 4
[6] => 5
[7] => 6
[8] => 7
)
在這個例子中, array_filter()會過濾掉null 、 false和空字符串'' ,只留下值為1 、 2 、 3等的元素。
array_count_values()函數用於統計數組中每個值出現的次數。它返回一個關聯數組,鍵是數組中的唯一值,值是這些值出現的次數。我們可以將array_filter()清洗後的數據作為輸入,來統計每個元素的頻次。
<?php
// 使用 array_count_values() 統計清洗後的數據頻次
$frequency = array_count_values($cleanedData);
// 打印頻次統計結果
print_r($frequency);
?>
輸出:
Array
(
[1] => 1
[2] => 1
[3] => 1
[4] => 1
[5] => 1
[6] => 1
[7] => 1
)
通過array_count_values() ,我們可以看到清洗後的數據中每個元素的頻次。由於每個元素在示例中只出現了一次,因此輸出中每個值的頻次都是1 。
下面是一個完整的示例,結合了array_filter()和array_count_values() :
<?php
$data = [1, 2, 3, null, 4, false, 5, 6, '', 7, 1, 2, 3];
// 使用 array_filter() 清洗數據,去除 null 和 false
$cleanedData = array_filter($data, function($value) {
return $value !== null && $value !== false && $value !== '';
});
// 使用 array_count_values() 統計清洗後的數據頻次
$frequency = array_count_values($cleanedData);
// 打印頻次統計結果
print_r($frequency);
?>
輸出:
Array
(
[1] => 2
[2] => 2
[3] => 2
[4] => 1
[5] => 1
[6] => 1
[7] => 1
)
在這個例子中,我們先清洗掉了無效的數據,然後通過array_count_values()統計了每個元素的出現頻次。
總結
通過結合使用array_filter()和array_count_values() ,我們可以輕鬆地清洗數據並統計數據頻次。 array_filter()可以根據自定義的條件過濾掉無效數據,而array_count_values()可以統計每個值出現的次數。這個組合在處理數組數據時非常有用,尤其是當你需要清理數據並進行頻次分析時。