Sama ada tatasusunan PHP mempunyai persilangan
Dalam PHP, kadangkala anda perlu melakukan beberapa operasi pada tatasusunan Salah satu operasi biasa ialah untuk menentukan sama ada dua tatasusunan mempunyai persilangan. Jika dua tatasusunan bersilang, maka mereka mempunyai sekurang-kurangnya satu elemen yang sama. Operasi ini sangat biasa dalam pembangunan sebenar Sebagai contoh, dalam sistem pendaftaran pengguna, adalah perlu untuk menentukan sama ada alamat e-mel yang dimasukkan oleh pengguna telah didaftarkan oleh pengguna lain atau dalam sistem pengurusan inventori produk, adalah perlu menentukan sama ada produk tertentu telah dibeli oleh pesanan lain.
Dalam PHP, terdapat banyak cara untuk menentukan sama ada dua tatasusunan bersilang Artikel ini akan memperkenalkan beberapa daripadanya.
PHP menyediakan fungsi array_intersect, yang boleh digunakan untuk membandingkan persilangan dua atau lebih tatasusunan. Penggunaannya adalah seperti berikut:
$array1 = array('a', 'b', 'c', 'd'); $array2 = array('c', 'd', 'e', 'f'); $result = array_intersect($array1, $array2); print_r($result);
Output adalah seperti berikut:
Array ( [2] => c [3] => d )
Fungsi ini mengembalikan tatasusunan yang elemennya merupakan persilangan dua tatasusunan input. Dalam contoh ini, persilangan tatasusunan input $array1 dan $array2 ialah tatasusunan('c', 'd') .
Selain fungsi array_intersect, PHP juga menyediakan fungsi array_intersect_key. Tidak seperti fungsi array_intersect, fungsi array_intersect_key membandingkan nilai kunci tatasusunan, bukan nilai itu sendiri. Penggunaannya adalah seperti berikut:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4); $array2 = array('c' => 3, 'd' => 4, 'e' => 5, 'f' => 6); $result = array_intersect_key($array1, $array2); print_r($result);
Output adalah seperti berikut:
Array ( [c] => 3 [d] => 4 )
Fungsi ini mengembalikan tatasusunan yang elemennya merupakan persilangan kekunci dua tatasusunan input. Dalam contoh ini, persilangan kekunci tatasusunan input $array1 dan $array2 ialah tatasusunan('c' => 3, 'd' => 4) .
Kaedah lain ialah menggunakan dua gelung foreach untuk membandingkan nilai dua tatasusunan. Penggunaannya adalah seperti berikut:
$array1 = array('a', 'b', 'c', 'd'); $array2 = array('c', 'd', 'e', 'f'); $result = false; foreach ($array1 as $value1) { foreach ($array2 as $value2) { if ($value1 == $value2) { $result = true; break 2; } } } if ($result) { echo '两个数组有交集'; } else { echo '两个数组没有交集'; }
Dalam kod di atas, kami mula-mula menetapkan nilai $result kepada false , menunjukkan bahawa kedua-dua tatasusunan tidak mempunyai persilangan. Kemudian gunakan dua gelung foreach untuk melintasi dua tatasusunan masing-masing Jika elemen yang sama ditemui, tetapkan nilai $result kepada benar dan gunakan pernyataan break 2 untuk melompat keluar daripada dua gelung. Akhirnya, hasilnya adalah output berdasarkan nilai $result.
Selain fungsi yang diperkenalkan di atas, PHP juga menyediakan fungsi array_intersect_ukey. Sama seperti fungsi array_intersect_key, fungsi array_intersect_ukey membandingkan nilai kunci tatasusunan, tetapi ia memerlukan fungsi panggil balik tambahan untuk dihantar untuk membandingkan dua kekunci. Penggunaannya adalah seperti berikut:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4); $array2 = array('C' => 3, 'D' => 4, 'e' => 5, 'f' => 6); $result = array_intersect_ukey($array1, $array2, 'strcasecmp'); print_r($result);
Output adalah seperti berikut:
Array ( [c] => 3 [d] => 4 )
Fungsi ini mengembalikan tatasusunan yang elemennya merupakan persilangan kekunci dua tatasusunan input. Dalam contoh ini, persilangan kekunci tatasusunan input $array1 dan $array2 ialah tatasusunan('c' => 3, 'd' => 4) . Ambil perhatian bahawa kami telah meluluskan fungsi panggil balik 'strcasecmp' yang digunakan untuk membandingkan kunci secara tidak sensitif huruf besar-besaran.
Ringkasan
Artikel ini memperkenalkan pelbagai kaedah dalam PHP untuk menentukan sama ada dua tatasusunan bersilang, termasuk array_intersect, array_intersect_key, dua foreach gelung dan fungsi array_intersect_ukey. Dalam pembangunan sebenar, kita boleh memilih kaedah yang sesuai mengikut situasi tertentu untuk mencapai prestasi dan kecekapan yang terbaik.
Atas ialah kandungan terperinci Adakah tatasusunan php mempunyai persimpangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!