当前位置: 首页> 最新文章列表> 结合 array_column 和 array_unique 去重某列的值

结合 array_column 和 array_unique 去重某列的值

M66 2025-04-28

在 PHP 中,我们经常需要处理数组,尤其是当数组中包含多个多维数组时,提取某一列的值并进行去重的需求也时常出现。今天,我们就来探讨一下如何结合 array_columnarray_unique 函数去重数组中某列的值。

使用 array_column 提取数组中的某一列

首先,我们可以通过 array_column 函数从一个多维数组中提取某一列的值。array_column 的作用是返回多维数组中某个指定列的值,常用来提取数据列表中的某一项信息。

例如,假设我们有一个包含多条记录的数组,每条记录有 idnameemail 等字段,我们想要从中提取所有的 email 地址。

<?php
$data = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
    ['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
    ['id' => 3, 'name' => 'Charlie', 'email' => 'alice@m66.net'],
];

$emails = array_column($data, 'email'); // 提取所有的 email 地址
print_r($emails);
?>

运行上述代码后,输出结果是:

Array
(
    [0] => alice@m66.net
    [1] => bob@m66.net
    [2] => alice@m66.net
)

使用 array_unique 去重数组中的值

接下来,我们使用 array_unique 函数对提取出来的 email 地址进行去重。array_unique 函数会删除数组中的重复值,只保留唯一的值。

<?php
$uniqueEmails = array_unique($emails); // 去重
print_r($uniqueEmails);
?>

运行上述代码后,输出结果是:

Array
(
    [0] => alice@m66.net
    [1] => bob@m66.net
)

可以看到,array_unique 成功去除了重复的 alice@m66.net 地址,只保留了唯一的邮箱地址。

综合使用 array_columnarray_unique

将这两个函数结合起来,我们就可以实现从多维数组中提取某一列并去重的操作。以下是一个完整的示例,演示如何提取 email 列并去重。

<?php
$data = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
    ['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
    ['id' => 3, 'name' => 'Charlie', 'email' => 'alice@m66.net'],
];

$emails = array_column($data, 'email'); // 提取所有的 email 地址
$uniqueEmails = array_unique($emails); // 去重
print_r($uniqueEmails);
?>

最终输出结果为: