PHP mengalih keluar pendua daripada tatasusunan dua dimensi

PHPz
Lepaskan: 2023-05-07 12:45:08
asal
2320 orang telah melayarinya

Dalam PHP, kita selalunya perlu memproses dan mengendalikan tatasusunan. Kadangkala, kita perlu mengalih keluar elemen pendua dalam tatasusunan Berikut ialah kaedah penyahduplikasian untuk tatasusunan dua dimensi.

Kaedah 1: Gunakan array_map dan sirikan fungsi

Fungsi array_map boleh menggunakan fungsi panggil balik pada setiap elemen dalam tatasusunan dan fungsi panggil balik mengembalikan elemen baharu. Kita boleh menggunakan fungsi bersiri untuk mensiri setiap elemen, kemudian menggunakan fungsi array_unique PHP untuk menyahduplikasi elemen bersiri, dan akhirnya menyahsiri elemen bersiri ke dalam elemen asal.

Kod sampel:

function uniqueArray($array)
{
    return array_map("unserialize", array_unique(array_map("serialize", $array)));
}

// 示例数据
$data = array(
    array("id" => 1, "name" => "apple"),
    array("id" => 2, "name" => "banana"),
    array("id" => 1, "name" => "apple"),
    array("id" => 3, "name" => "pear")
);

// 执行去重操作
$result = uniqueArray($data);

// 输出结果
print_r($result);
Salin selepas log masuk

Hasil keluaran:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
        )
    [3] => Array
        (
            [id] => 3
            [name] => pear
        )
)
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mentakrifkan fungsi uniqueArray, yang menggunakan fungsi array_map untuk memetakan setiap elemen dalam tatasusunan Serialkan, kemudian gunakan fungsi array_unique untuk menyahduplikasi elemen bersiri, dan akhirnya gunakan fungsi unserialize untuk menyahsiri elemen bersiri ke dalam elemen asal.

Kaedah 2: Gunakan fungsi array_reduce dan array_merge fungsi

Selain menggunakan fungsi array_map dan fungsi bersiri, kita juga boleh menggunakan fungsi array_reduce dan array_merge fungsi untuk meratakan elemen dalam tatasusunan dua dimensi pemprosesan untuk membentuk tatasusunan satu dimensi, kemudian gunakan fungsi tatasusunan_unik untuk menyahduplikasi tatasusunan satu dimensi, dan akhirnya gunakan fungsi peta tatasusunan untuk menukar tatasusunan satu dimensi kembali kepada tatasusunan dua dimensi.

Kod sampel:

function uniqueArray($array)
{
    return array_map("unserialize", array_unique(array_map("serialize", array_reduce($array, "array_merge", array()))));
}

// 示例数据
$data = array(
    array("id" => 1, "name" => "apple"),
    array("id" => 2, "name" => "banana"),
    array("id" => 1, "name" => "apple"),
    array("id" => 3, "name" => "pear")
);

// 执行去重操作
$result = uniqueArray($data);

// 输出结果
print_r($result);
Salin selepas log masuk

Hasil keluaran:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
        )
    [3] => Array
        (
            [id] => 3
            [name] => pear
        )
)
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mentakrifkan fungsi uniqueArray, yang menggunakan fungsi array_reduce dan array_merge untuk menukar kedua-duanya -dimensi Unsur-unsur dalam tatasusunan diratakan untuk membentuk tatasusunan satu dimensi, dan kemudian fungsi peta tatasusunan digunakan untuk menyerikan, menyahduplikasi dan menyahsiri unsur-unsur dalam tatasusunan satu dimensi, dan akhirnya tatasusunan satu dimensi ditukar kembali kepada tatasusunan dua dimensi.

Ringkasan

Kedua-dua kaedah di atas boleh menyahduplikasi tatasusunan dua dimensi, tetapi kaedah pertama menggunakan bersiri untuk mengekalkan jenis data asal semasa penyahduplikasian, manakala kaedah dua memerlukan meratakan elemen dalam tatasusunan dua dimensi, dan kemudian menukar tatasusunan satu dimensi kembali kepada tatasusunan dua dimensi. Kaedah yang mana untuk digunakan boleh dipilih berdasarkan keperluan sebenar dan jumlah data.

Atas ialah kandungan terperinci PHP mengalih keluar pendua daripada tatasusunan dua dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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