Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan fungsi array_unique untuk membuang tatasusunan pendua dalam PHP

Cara menggunakan fungsi array_unique untuk membuang tatasusunan pendua dalam PHP

王林
王林asal
2023-06-26 12:52:40778semak imbas

Dalam bahasa PHP, tatasusunan ialah struktur data yang sangat biasa. Walau bagaimanapun, semasa proses pembangunan, kita sering menghadapi senario yang memerlukan penyahduplikasi tatasusunan. Pada masa ini, fungsi array_unique yang disediakan dalam PHP boleh berguna. Fungsi

array_unique ialah fungsi yang digunakan untuk mengalih keluar nilai pendua dalam tatasusunan. Penggunaannya sangat mudah, ia boleh menerima tatasusunan sebagai parameter dan kemudian mengembalikan tatasusunan pendua.

Sekarang, mari kita perkenalkan penggunaan fungsi array_unique secara terperinci:

  1. Penggunaan asas

Penggunaan paling asas adalah dengan hanya lulus dalam tatasusunan, seperti yang ditunjukkan di bawah:

$arr = array('a', 'b', 'c', 'a', 'b');
$newArr = array_unique($arr);
print_r($newArr);

Hasil output ialah:

Array
(
    [0] => a
    [1] => b
    [2] => c
)
anda boleh lihat, nilai pendua "a" dan "b" dalam tatasusunan asal telah dialih keluar.

    Penyahduplikasi tatasusunan berbilang dimensi
Jika anda perlu menyahduplikasi tatasusunan berbilang dimensi, anda juga boleh menggunakan fungsi array_unique, tetapi perlu diperhatikan bahawa kerana fungsi array_unique hanya boleh memproses tatasusunan satu dimensi, anda perlu untuk menggunakan beberapa kemahiran untuk mengendalikan tatasusunan berbilang dimensi.

Sebagai contoh, untuk tatasusunan berbilang dimensi berikut, ia perlu dinyahduplikasi:

$arr = array(
    array('a', 'b', 'c'),
    array('a', 'd', 'e'),
    array('a', 'b', 'c'),
);

Anda boleh menggunakan kod berikut untuk menyahganda:

$tempArray = array();
foreach($arr as $key=>$value){
   $tempArray[$key] = serialize($value);
}
$tempArray = array_unique($tempArray);
foreach($tempArray as $key=>$value){
   $tempArray[$key] = unserialize($value);
}
print_r($tempArray);

Hasil keluarannya ialah:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [1] => Array
        (
            [0] => a
            [1] => d
            [2] => e
        )

)

Anda boleh melihat bahawa tatasusunan pendua mempunyai telah dikeluarkan.

    Fungsi perbandingan tersuai
Kadangkala, fungsi perbandingan tersuai diperlukan untuk mencapai keperluan penyahduplikasian yang lebih kompleks. Pada masa ini, anda boleh menggunakan fungsi array_filter untuk mencapai ini.

Sebagai contoh, kod berikut boleh mencapai penduaduaan mengikut nilai kunci yang ditentukan:

$arr = array(
    array('name' => 'Tom', 'age' => 20),
    array('name' => 'Jack', 'age' => 22),
    array('name' => 'Tom', 'age' => 25),
);

function compare($v1, $v2){
    return $v1['name'] == $v2['name'];
}

$newArr = array();
foreach($arr as $value){
    if(! in_array($value, $newArr, true)){
        $newArr[] = $value;
    }
}

print_r($newArr);

Hasil output ialah:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 20
        )

    [1] => Array
        (
            [name] => Jack
            [age] => 22
        )

)

Anda boleh melihat bahawa penduaan dinyahduplikasi mengikut nilai "nama".

Ringkasan

Fungsi array_unique dalam PHP ialah fungsi deduplikasi yang sangat mudah Ia boleh menyahduplikasi tatasusunan satu dimensi, atau ia juga boleh menggunakan beberapa teknik untuk menangani masalah deduplikasi tatasusunan berbilang dimensi, dan ia juga boleh. disesuaikan Bandingkan fungsi untuk melaksanakan keperluan penyahduplikasian yang lebih kompleks. Semasa proses pembangunan, tatasusunan penyahduplikasi dengan tepat dan cepat boleh meningkatkan kecekapan program dan kecekapan pembangunan, jadi pembangun perlu menguasai penggunaan fungsi array_unique yang betul.

Atas ialah kandungan terperinci Cara menggunakan fungsi array_unique untuk membuang tatasusunan pendua dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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