当前位置: 首页> 最新文章列表> 用 array_filter() 清洗数据后再统计

用 array_filter() 清洗数据后再统计

M66 2025-06-07

在 PHP 中,处理数据清洗和频次统计是常见的需求。我们可以通过 array_filter() 清洗数据,去除不符合条件的元素,接着使用 array_count_values() 统计清洗后数据中各个元素的频次。下面我们将通过具体示例来演示如何实现这一过程。

步骤一:使用 array_filter() 清洗数据

array_filter() 函数可以根据回调函数的条件过滤数组中的元素,返回一个包含所有满足条件元素的新数组。例如,我们可以使用该函数过滤掉数组中值为 nullfalse 的元素,或者根据某些其他条件筛选出符合条件的数据。

示例代码:清洗数据

<?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() 会过滤掉 nullfalse 和空字符串 '',只留下值为 123 等的元素。

步骤二:使用 array_count_values() 统计数据频次

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