untuk mencapai deduplikasi dengan logik tersuai. Sebagai contoh, jika anda perlu deduplikasi berdasarkan kunci tertentu dalam pelbagai array bersekutu, mudah array_unique()
tidak akan mencukupi. Fungsi tanpa nama menyediakan fleksibiliti untuk mengendalikan senario tersebut. Inilah caranya: array_filter()
array_unique()
$array = [ ['id' => 1, 'name' => 'apple'], ['id' => 2, 'name' => 'banana'], ['id' => 1, 'name' => 'apple'], ['id' => 3, 'name' => 'orange'] ]; $uniqueArray = array_unique($array, SORT_REGULAR); //This won't work as expected $uniqueArray = array_reduce($array, function ($carry, $item) { $key = $item['id']; //Deduplication based on 'id' if (!isset($carry[$key])) { $carry[$key] = $item; } return $carry; }, []); $uniqueArray = array_values($uniqueArray); //Convert back to indexed array print_r($uniqueArray);
(yang mengumpulkan unsur -unsur unik). Jika tidak, ia menambah elemen. Akhirnya, array_reduce
umumnya lebih cekap. Overhead memanggil fungsi tanpa nama untuk setiap elemen dalam array yang besar boleh menjadi ketara. $carry
array_values
Kecekapan juga bergantung pada fungsi array yang dipilih.
array_unique()
: Untuk deduplikasi berasaskan nilai mudah, array_unique()
biasanya pilihan terpantas. Ia dioptimumkan untuk tugas khusus ini. Overhead ini boleh menjadi penting untuk tatasusunan besar. Pendekatan ini mengelakkan fungsi panggilan overhead array_filter()
fleksibiliti array_reduce()
. Mereka membolehkan anda menentukan logik deduplikasi tersuai yang tidak disokong secara langsung oleh fungsi terbina dalam seperti . Contohnya: Deduplikasi berdasarkan kunci khusus dalam array bersekutu: Atas ialah kandungan terperinci Bolehkah PHP Array Deduplication dilaksanakan menggunakan fungsi tanpa nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!