Dalam pengaturcaraan PHP, adalah perkara biasa untuk menghadapi masalah memadamkan persilangan dua tatasusunan, terutamanya apabila persilangan berbilang tatasusunan perlu diproses. Artikel ini akan memperkenalkan anda kepada kaedah mudah dan praktikal untuk memadamkan persilangan antara dua tatasusunan.
1. Huraian Masalah
Andaikan terdapat dua tatasusunan $A dan $B, masing-masing seperti berikut:
$A = tatasusunan(1,2,3,4, 5 ,6);
$B = array(4,5,7,8,9,10);
Keperluan adalah untuk mengekalkan hanya semua elemen $A dan $B, tetapi bukan dua Bahagian persilangan dalam tatasusunan, iaitu tatasusunan hasil hendaklah:
$Result = array(1,2,3,6,7,8,9,10);
Jadi apa yang perlu saya lakukan? Berikut akan memperkenalkan anda satu persatu.
2. Kaedah 1
Pertama, kita boleh melaksanakan operasi perbezaan elemen tatasusunan melalui fungsi array_diff dalam PHP Kodnya adalah seperti berikut:
$Result = array_merge (array_diff ($A, $B), array_diff($B, $A));
Dalam kod di atas, array_diff($A, $B) bermaksud menapis item dalam tatasusunan $A tetapi tidak dalam $B Elemen dalam tatasusunan; array_diff($B, $A) bermaksud menapis elemen yang berada dalam tatasusunan $B tetapi tidak dalam tatasusunan $A. Kemudian gunakan fungsi array_merge untuk menggabungkan dua tatasusunan hasil. Kaedah ini kelihatan mudah, tetapi sebenarnya ia tidak teguh, seperti yang ditunjukkan dalam perkara berikut:
Jadi, untuk mengelakkan masalah ini dengan lebih baik, kita perlu menggunakan kaedah yang lebih mantap untuk memadamkan persilangan elemen tatasusunan.
3 Kaedah 2
Seterusnya, kita boleh menggelungkan setiap elemen dalam tatasusunan, dan melaksanakan operasi penyahduplikasian dan penapisan dalam proses. Kodnya adalah seperti berikut:
$Result = array();
foreach($A sebagai $value){
if(!in_array($value, $B)){ $Result[] = $value; }
}
foreach($ B sebagai $value){
if(!in_array($value, $Result)){ $Result[] = $value; }
}
Dalam kod di atas, kami mula-mula mentakrifkan tatasusunan kosong $Result, mewakili tatasusunan hasil akhir. Kemudian gunakan dua gelung foreach untuk lelaran melalui setiap elemen dalam $A dan $B. Semasa proses, gunakan fungsi in_array untuk menentukan sama ada elemen semasa muncul dalam tatasusunan lain, seperti sama ada ia muncul dalam $B. Jika ia tidak muncul sebelum ini, ia ditambahkan pada $Result. Tatasusunan $Result terakhir ialah penyatuan semua elemen dalam dua tatasusunan.
Menggunakan kaedah ini mempunyai kelebihan berikut:
4. Ringkasan
Dalam PHP, artikel ini memperkenalkan dua cara untuk menangani isu persilangan tatasusunan: menggunakan fungsi array_diff dan penapisan lintasan gelung. Walaupun kedua-dua kaedah boleh mendapatkan hasil yang betul, kaedah menggunakan traversal gelung adalah lebih teguh dan boleh mengendalikan lebih banyak kes tepi, yang patut dipelajari.
Atas ialah kandungan terperinci Bagaimana untuk memadam persilangan dua tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!