Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengalih keluar pendua daripada tatasusunan dua dimensi dalam php

Bagaimana untuk mengalih keluar pendua daripada tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-19 09:20:11559semak imbas

Dengan perkembangan Internet, PHP telah menjadi salah satu bahasa pengaturcaraan yang paling popular. Dalam pembangunan PHP, selalunya perlu menggunakan struktur data tatasusunan. Dalam pembangunan sebenar, kita selalunya perlu melakukan operasi penyahduplikasian pada tatasusunan. Artikel ini akan memperkenalkan anda kepada cara mengalih keluar pendua daripada tatasusunan dua dimensi dalam PHP.

Tatasusunan dua dimensi ialah tatasusunan besar yang terdiri daripada sekumpulan tatasusunan. Jika kita perlu menyahduplikasi tatasusunan ini, kita perlu menggunakan fungsi array_unique() dalam PHP. Walau bagaimanapun, jika kita terus menggunakan fungsi array_unique() untuk mengalih keluar item pendua dalam tatasusunan dua dimensi, kita tidak akan dapat mencapai kesan yang diingini.

Berikut ialah contoh tatasusunan dua dimensi yang mana kita perlu mengalih keluar pendua.

$arr = array(
    array('id'=>1, 'name'=>'Tom'),
    array('id'=>2, 'name'=>'Jerry'),
    array('id'=>3, 'name'=>'Bob'),
    array('id'=>1, 'name'=>'Tom')
);

Jika kita menggunakan fungsi array_unique() untuk mengalih keluar pendua, seperti yang ditunjukkan di bawah:

$arr = array_unique($arr);

Kemudian kita akan mendapati bahawa hasil pelaksanaan tidak seperti yang kita jangkakan. Kita perlu menggunakan kaedah berikut untuk mengalih keluar pendua dengan betul dalam tatasusunan dua dimensi.

Kaedah 1:

Mula-mula kita menukar tatasusunan yang perlu dinyahduplikasi kepada rentetan, dan kemudian gunakan fungsi array_unique() untuk mengalih keluar pendua. Akhir sekali, tukarkan hasilnya kepada tatasusunan PHP.

$str = '';
foreach ($arr as $k => $v) {
    $str .= implode(',', $v) . ';';
}
$str = implode(',', array_unique(explode(';', trim($str, ';'))));
$arr = array();
foreach (explode(';', $str) as $k => $v) {
    $arr[$k] = explode(',', $v);
}
print_r($arr);

Walaupun kaedah ini boleh mengalih keluar item pendua dalam tatasusunan dua dimensi, ia lebih menyusahkan dan tidak cekap.

Kaedah 2:

Kita boleh menggunakan satu lagi fungsi array_column() dalam PHP, yang boleh mengekstrak semua medan daripada tatasusunan dua dimensi dan mengembalikan tatasusunan satu dimensi.

$arr = array(
    array('id'=>1, 'name'=>'Tom'),
    array('id'=>2, 'name'=>'Jerry'),
    array('id'=>3, 'name'=>'Bob'),
    array('id'=>1, 'name'=>'Tom')
);
$idArr = array_column($arr, 'id');
$countArr = array_count_values($idArr);
foreach ($arr as $k => $v) {
    if ($countArr[$v['id']] > 1) {
        unset($arr[$k]);
    }
}
print_r($arr);

Kaedah ini agak mudah dan hanya memerlukan penggunaan dua fungsi. Mula-mula gunakan fungsi array_column() untuk mengekstrak semua nilai medan id dalam tatasusunan dua dimensi, dan kemudian gunakan fungsi array_count_values() untuk mengira nilai ini. Akhir sekali, tatasusunan asal dilalui Jika kiraan id yang sepadan lebih besar daripada 1 dalam tatasusunan $idArr, ini bermakna item itu perlu dialih keluar.

Seperti yang dapat dilihat daripada dua kaedah di atas, penyahduplikasi tatasusunan dua dimensi adalah lebih menyusahkan sedikit daripada tatasusunan satu dimensi. Tetapi jika kita menggunakan kaedah yang sesuai, kita masih boleh mengalih keluar pendua dengan agak mudah.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar pendua daripada tatasusunan dua dimensi 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