要去重多维 php 数组中的重复元素,可以使用 array_unique() 函数或者自定义递归函数。array_unique() 会将内部数组作为一个整体处理,而自定义递归函数会遍历数组并逐个元素地检查它们。在实战案例中,可以利用这些方法去除重复的电子邮件地址,以确保向每个用户只发送一封邮件。
如何去重多维 PHP 数组中的重复元素
前言
在处理多维数组时,有时会遇到元素重复的问题。这可能会导致数据不一致和分析困难。本文将介绍几种方法,用于有效地从多维 PHP 数组中去除重复元素。
方法
1. 使用 array_unique()
函数
array_unique()
函数可以用来删除一维数组中的重复元素。它接受一个数组作为参数,并返回一个包含唯一元素的新数组。
1 2 3 4 5 6 7 8 9 10 | <?php
$arr = array (
array (1, 2, 3),
array (3, 4, 5),
array (1, 2, 6),
);
$unique_arr = array_unique ( $arr );
print_r( $unique_arr );
?>
|
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 3
[1] => 4
[2] => 5
)
[2] => Array
(
[0] => 1
[1] => 2
[2] => 6
)
)
|
在这个例子中,array_unique()
函数并没有删除多维数组中的重复元素。它只是将内部数组作为一个整体来处理,而没有递归地遍历它们。
2. 使用递归函数
为了递归地去除多维数组中的重复元素,我们需要编写一个自定义函数。该函数将遍历数组并逐个元素地检查它们。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php
function remove_duplicates( $arr ) {
$unique_arr = array ();
foreach ( $arr as $sub_arr ) {
if (!in_array( $sub_arr , $unique_arr )) {
$unique_arr [] = $sub_arr ;
}
}
return $unique_arr ;
}
?>
|
我们现在可以使用这个函数对多维数组进行去重:
1 2 | $unique_arr = remove_duplicates( $arr );
print_r( $unique_arr );
|
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 3
[1] => 4
[2] => 5
)
[2] => Array
(
[0] => 1
[1] => 2
[2] => 6
)
)
|
实战案例
假设我们有一个包含用户电子邮件地址的多维数组。我们需要去除重复的电子邮件地址,以确保向每个用户只发送一封邮件。我们可以使用上述方法之一来完成此任务。
使用 array_unique()
函数:
1 2 3 4 5 6 7 8 9 10 | <?php
$users = array (
array ( 'email' => 'john@example.com' ),
array ( 'email' => 'mary@example.com' ),
array ( 'email' => 'john@example.com' ),
);
$unique_users = array_unique ( $users , SORT_REGULAR);
print_r( $unique_users );
?>
|
使用递归函数:
1 2 3 4 5 6 7 8 9 10 | <?php
$users = array (
array ( 'email' => 'john@example.com' ),
array ( 'email' => 'mary@example.com' ),
array ( 'email' => 'john@example.com' ),
);
$unique_users = remove_duplicates( $users );
print_r( $unique_users );
?>
|
两种方法都将产生以下输出,其中重复的电子邮件地址已删除:
1 2 3 4 5 6 7 8 9 10 11 | Array
(
[0] => Array
(
[email] => john@example.com
)
[1] => Array
(
[email] => mary@example.com
)
)
|
登录后复制
以上就是如何去重多维 PHP 数组中的重复元素?的详细内容,更多请关注php中文网其它相关文章!