Rumah >pembangunan bahagian belakang >masalah PHP >php array ke koleksi
Dalam PHP, tatasusunan dan set ialah struktur data yang sangat biasa. Tatasusunan ialah koleksi tertib yang boleh mengandungi pelbagai jenis data, seperti nombor, rentetan dan objek. Satu set adalah lebih abstrak dan mewakili koleksi elemen, di mana setiap elemen adalah unik dan tidak mempunyai susunan atau indeks tertentu.
Dalam pembangunan sebenar, kita selalunya perlu menukar tatasusunan kepada satu set untuk memudahkan carian dan operasi yang lebih cekap. Dalam PHP, sangat mudah untuk melaksanakan penukaran ini, dan artikel ini akan memperkenalkan kaedah dan teknik pelaksanaan.
1. Gunakan fungsi array_unique
Dalam PHP, terdapat array_unique fungsi terbina dalam, yang boleh digunakan untuk mengalih keluar elemen pendua daripada tatasusunan. Sintaks asas fungsi ini adalah seperti berikut:
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
Antaranya, $array mewakili tatasusunan yang perlu dinyahduplikasi, $sort_flags mewakili kaedah pengisihan pilihan, yang biasa ialah SORT_STRING (diisih mengikut rentetan), SORT_NUMERIC (isih mengikut nombor) Isih mengikut cara) dan SORT_REGULAR (isih mengikut susunan semula jadi), dsb.
Jika anda menghantar tatasusunan kepada fungsi array_unique, ia akan mengembalikan tatasusunan baharu yang mengandungi elemen unik. Contohnya:
$arr = array(1,2,2,3,3,3); $set = array_unique($arr); print_r($set); // 输出 Array ( [0] => 1 [1] => 2 [3] => 3 )
Dapat dilihat bahawa menggunakan fungsi array_unique boleh menukar tatasusunan menjadi set dengan mudah.
2. Gunakan fungsi array_flip
Selain menggunakan fungsi array_unique, terdapat satu lagi cara mudah untuk menukar tatasusunan kepada koleksi, iaitu menggunakan fungsi array_flip. Fungsi ini digunakan untuk menukar kunci dan nilai dalam tatasusunan, iaitu, nilai dalam tatasusunan digunakan sebagai kunci tatasusunan baharu, dan kunci asal diabaikan. Sintaks asas fungsi adalah seperti berikut:
array array_flip ( array $array )
Antaranya, $array mewakili tatasusunan yang kunci dan nilainya perlu ditukar. Jika anda menghantar tatasusunan kepada fungsi array_flip, ia mengembalikan tatasusunan baharu dengan nilai dalam tatasusunan asal sebagai kunci dan semua nilai dalam tatasusunan baharu. Contohnya:
$arr = array('a', 'b', 'c'); $set = array_flip($arr); print_r($set); // 输出 Array ( [a] => 0 [b] => 1 [c] => 2 )
Memandangkan elemen dalam koleksi mestilah unik, kita boleh mengabaikan nilai dalam tatasusunan baharu dan hanya menyimpan kuncinya, iaitu:
$arr = array('a', 'b', 'c'); $set = array_flip($arr); $set = array_keys($set); print_r($set); // 输出 Array ( [0] => a [1] => b [2] => c )
Dengan cara ini, kita mendapat koleksi A yang mengandungi semua elemen dalam tatasusunan asal.
3. Gunakan fungsi array_reduce
Satu lagi kaedah biasa ialah menggunakan fungsi array_reduce. Fungsi ini digunakan untuk mengira secara berulang semua elemen dalam tatasusunan dan mengembalikan hasil akhir. Sintaks asas fungsi adalah seperti berikut:
mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
Antaranya, $array mewakili tatasusunan yang perlu dikira secara berulang, $callback ialah fungsi panggil balik yang digunakan untuk mengira elemen dalam tatasusunan, $initial ialah nilai awal pilihan, Digunakan untuk menentukan keadaan awal semasa proses lelaran. Sintaks asas fungsi panggil balik adalah seperti berikut:
mixed function callback ( mixed $carry , mixed $item )
Antaranya, $carry mewakili hasil lelaran sebelumnya dan $item mewakili elemen lelaran semasa. Fungsi panggil balik menjana hasil pengiraan baharu berdasarkan hasil pengiraan terakhir dan elemen semasa, dan mengembalikannya kepada fungsi array_reduce untuk lelaran seterusnya.
Untuk menukar tatasusunan kepada koleksi, kita perlu menggunakan teknik penyahduplikasian dalam fungsi panggil balik. Khususnya, kita boleh menggunakan teknik rujukan tatasusunan dalam PHP untuk menggunakan nilai sebagai kunci dalam koleksi dan menetapkan nilai itu sendiri kepada 1 untuk memastikan bahawa nilai yang sepadan dengan setiap kunci ialah 1, dengan itu memastikan elemen dalam koleksi adalah unik. . Kodnya adalah seperti berikut:
$arr = array(1,2,2,3,3,3); $set = array_reduce($arr, function(&$res, $cur){ $res[$cur] = 1; return $res; }, array()); print_r(array_keys($set)); // 输出 Array ( [0] => 1 [1] => 2 [2] => 3 )
Melalui pemprosesan fungsi panggil balik di atas, kami telah berjaya menukar tatasusunan asal kepada koleksi. Sudah tentu, kita juga boleh menggunakan operasi khusus set lain dalam fungsi panggil balik, seperti persimpangan, kesatuan, perbezaan, dsb.
Ringkasan
Menukar tatasusunan kepada koleksi adalah perkara biasa dalam pembangunan sebenar. PHP menyediakan beberapa cara untuk mencapai penukaran ini, termasuk menggunakan fungsi terbina dalam array_unique, array_flip dan array_reduce, masing-masing dengan kebaikan dan keburukan mereka sendiri. Dalam senario sebenar, pembangun boleh memilih kaedah yang berbeza mengikut situasi tertentu untuk memastikan kecekapan dan kebolehbacaan kod.
Atas ialah kandungan terperinci php array ke koleksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!