Bagaimana untuk mengalih keluar elemen pendua dalam tatasusunan PHP berbilang dimensi?

WBOY
Lepaskan: 2024-04-28 08:06:02
asal
1166 orang telah melayarinya

Untuk mengalih keluar elemen pendua dalam tatasusunan PHP berbilang dimensi, anda boleh menggunakan fungsi array_unique() atau fungsi rekursif tersuai. array_unique() mengendalikan tatasusunan dalaman secara keseluruhan, manakala fungsi rekursif tersuai melelang ke atas tatasusunan dan memeriksanya elemen demi elemen. Dalam kes penggunaan praktikal, kaedah ini boleh digunakan untuk mengalih keluar alamat e-mel pendua untuk memastikan bahawa hanya satu e-mel dihantar kepada setiap pengguna.

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

Cara mengalih keluar elemen pendua dalam tatasusunan PHP berbilang dimensi

Kata Pengantar

Apabila berurusan dengan tatasusunan berbilang dimensi, kadangkala anda akan menghadapi masalah elemen pendua. Ini boleh membawa kepada data yang tidak konsisten dan analisis yang sukar. Artikel ini akan memperkenalkan beberapa kaedah untuk mengalih keluar elemen pendua secara berkesan daripada tatasusunan PHP berbilang dimensi.

Kaedah

1 Gunakan fungsi array_unique() array_unique() 函数

array_unique() 函数可以用来删除一维数组中的重复元素。它接受一个数组作为参数,并返回一个包含唯一元素的新数组。

<?php
$arr = array(
    array(1, 2, 3),
    array(3, 4, 5),
    array(1, 2, 6),
);

$unique_arr = array_unique($arr);
print_r($unique_arr);
?>
Salin selepas log masuk

输出:

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
        )
)
Salin selepas log masuk
Salin selepas log masuk

在这个例子中,array_unique() 函数并没有删除多维数组中的重复元素。它只是将内部数组作为一个整体来处理,而没有递归地遍历它们。

2. 使用递归函数

为了递归地去除多维数组中的重复元素,我们需要编写一个自定义函数。该函数将遍历数组并逐个元素地检查它们。

<?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;
}
?>
Salin selepas log masuk

我们现在可以使用这个函数对多维数组进行去重:

$unique_arr = remove_duplicates($arr);
print_r($unique_arr);
Salin selepas log masuk

输出:

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
        )
)
Salin selepas log masuk
Salin selepas log masuk

实战案例

假设我们有一个包含用户电子邮件地址的多维数组。我们需要去除重复的电子邮件地址,以确保向每个用户只发送一封邮件。我们可以使用上述方法之一来完成此任务。

使用 array_unique()

array_unique() boleh digunakan untuk memadamkan elemen pendua dalam tatasusunan satu dimensi . Ia menerima tatasusunan sebagai hujah dan mengembalikan tatasusunan baharu yang mengandungi elemen unik.

<?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);
?>
Salin selepas log masuk
Output:
<?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);
?>
Salin selepas log masuk

Dalam contoh ini, fungsi array_unique() tidak mengalih keluar elemen pendua daripada tatasusunan berbilang dimensi. Ia hanya mengendalikan tatasusunan dalam secara keseluruhan tanpa mengulanginya secara rekursif.

🎜2. Menggunakan fungsi rekursif 🎜🎜🎜Untuk mengalih keluar elemen pendua secara rekursif daripada tatasusunan berbilang dimensi, kita perlu menulis fungsi tersuai. Fungsi ini akan berulang melalui tatasusunan dan menyemaknya elemen demi elemen. 🎜
Array
(
    [0] => Array
        (
            [email] => john@example.com
        )
    [1] => Array
        (
            [email] => mary@example.com
        )
)
Salin selepas log masuk
🎜 Kini kita boleh menyahduplikasi tatasusunan berbilang dimensi menggunakan fungsi ini: 🎜rrreee🎜 Output: 🎜rrreee🎜🎜 Contoh praktikal 🎜🎜🎜 Katakan kita mempunyai tatasusunan berbilang dimensi yang mengandungi alamat e-mel pengguna. Kami perlu mengalih keluar alamat e-mel pendua untuk memastikan hanya satu e-mel dihantar kepada setiap pengguna. Kita boleh menyelesaikan tugas ini menggunakan salah satu kaedah yang disebutkan di atas. 🎜🎜🎜Menggunakan fungsi array_unique(): 🎜🎜rrreee🎜🎜Menggunakan fungsi rekursif: 🎜🎜rrreee🎜Kedua-dua kaedah akan menghasilkan output berikut, dengan alamat e-mel pendua dialih keluar: 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar elemen pendua dalam tatasusunan PHP berbilang dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan