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);
Hasil keluaran:
Array ( [0] => Array ( [id] => 1 [name] => apple ) [1] => Array ( [id] => 2 [name] => banana ) [3] => Array ( [id] => 3 [name] => pear ) )
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);
Hasil keluaran:
Array ( [0] => Array ( [id] => 1 [name] => apple ) [1] => Array ( [id] => 2 [name] => banana ) [3] => Array ( [id] => 3 [name] => pear ) )
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!