在 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() 可以统计每个值出现的次数。这个组合在处理数组数据时非常有用,尤其是当你需要清理数据并进行频次分析时。