×

如何去重多维 PHP 数组中的重复元素?

hxl hxl 发表于2024-04-28 08:22:51 浏览7 评论0

抢沙发发表评论

要去重多维 php 数组中的重复元素,可以使用 array_unique() 函数或者自定义递归函数。array_unique() 会将内部数组作为一个整体处理,而自定义递归函数会遍历数组并逐个元素地检查它们。在实战案例中,可以利用这些方法去除重复的电子邮件地址,以确保向每个用户只发送一封邮件。

如何去重多维 PHP 数组中的重复元素?

如何去重多维 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中文网其它相关文章!


群贤毕至

访客