在 PHP 中,我们经常需要处理数组,尤其是当数组中包含多个多维数组时,提取某一列的值并进行去重的需求也时常出现。今天,我们就来探讨一下如何结合 array_column 和 array_unique 函数去重数组中某列的值。
首先,我们可以通过 array_column 函数从一个多维数组中提取某一列的值。array_column 的作用是返回多维数组中某个指定列的值,常用来提取数据列表中的某一项信息。
例如,假设我们有一个包含多条记录的数组,每条记录有 id、name 和 email 等字段,我们想要从中提取所有的 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 函数对提取出来的 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 地址,只保留了唯一的邮箱地址。
将这两个函数结合起来,我们就可以实现从多维数组中提取某一列并去重的操作。以下是一个完整的示例,演示如何提取 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);
?>
最终输出结果为: