Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Petua praktikal untuk fungsi PHP: array_intersect()

Petua praktikal untuk fungsi PHP: array_intersect()

PHPz
PHPzasal
2023-06-20 08:33:183779semak imbas

Dalam PHP, array_intersect() ialah fungsi tatasusunan yang sangat berguna yang boleh digunakan untuk membandingkan elemen yang sama antara dua atau lebih tatasusunan dan mengembalikan persilangan tatasusunan unsur-unsur ini. Artikel ini akan memperkenalkan penggunaan asas fungsi array_intersect() dan beberapa petua praktikal untuk membantu pembangun PHP menggunakan fungsi ini dengan lebih baik.

1. Sintaks fungsi dan penggunaan asas

array_intersect() Sintaks fungsi adalah seperti berikut:

array_intersect ( array $array1 , array $array2 [, array $... ] ) : array

Fungsi ini memerlukan sekurang-kurangnya dua tatasusunan sebagai parameter, tetapi boleh menerima pelbagai tatasusunan. Nilai pulangan fungsi ialah tatasusunan baharu yang mengandungi elemen persilangan semua tatasusunan. Contohnya:

$arr1 = array('apple', 'banana', 'pear');
$arr2 = array('banana', 'orange', 'grape');
$arr3 = array('banana', 'kiwi', 'pear');
$result = array_intersect($arr1, $arr2, $arr3);
print_r($result); //输出结果为:array('banana');

Dalam contoh ini, kami mentakrifkan 3 tatasusunan: $arr1, $arr2 dan $arr3, setiap satu mengandungi beberapa nama buah. Gunakan fungsi array_intersect($arr1, $arr2, $arr3) untuk mengira persilangan tatasusunan ini dan mencetak hasil pulangan. Ternyata satu-satunya elemen persilangan dalam tatasusunan ini ialah "pisang".

2. Kemahiran praktikal

Selain penggunaan asas, fungsi array_intersect() juga mempunyai beberapa kemahiran praktikal, yang akan diperkenalkan satu demi satu di bawah.

  1. Alih keluar elemen pendua

Jika kita mempunyai tatasusunan yang mungkin terdapat beberapa elemen pendua, kita boleh menggunakan fungsi array_unique() untuk mengalih keluar elemen pendua ini. Walau bagaimanapun, jika kita ingin menyimpan elemen pendua sahaja dan mengalih keluar elemen lain, kita boleh menggunakan fungsi array_intersect(). Contohnya:

$arr1 = array('apple', 'banana', 'orange', 'pear', 'banana', 'kiwi');
$arr2 = array_unique($arr1); //去除重复元素
$result = array_intersect($arr1, $arr2); //返回重复元素
print_r($result); //输出结果为:array('banana');

Dalam contoh ini, kami mentakrifkan tatasusunan $arr1 yang mengandungi elemen pendua, mula-mula gunakan fungsi array_unique() untuk mengalih keluar elemen pendua ini, dan kemudian gunakan fungsi array_intersect() untuk mengira nilai ​​daripada $arr1 dan $arr2 Persimpangan, hasilnya hanya mengandungi elemen berulang "pisang" dalam tatasusunan.

  1. Bandingkan persilangan berbilang tatasusunan

Fungsi array_intersect() boleh menerima berbilang tatasusunan sebagai parameter, yang memberikan kemudahan kepada kita untuk membandingkan persilangan berbilang tatasusunan. Sebagai contoh, kita boleh menggunakan array_intersect($arr1, $arr2, $arr3) untuk mengira persilangan antara 3 tatasusunan, tetapi bagaimana jika kita mempunyai berbilang tatasusunan untuk dibandingkan? Ini boleh dicapai menggunakan gelung for, seperti yang ditunjukkan di bawah:

$arr1 = array('apple', 'banana', 'pear');
$arr2 = array('banana', 'orange', 'grape');
$arr3 = array('banana', 'kiwi', 'pear');
$arr4 = array('banana', 'cherry', 'pear');
$cnt = count(func_get_args()); //获取参数个数
for ($i = 1; $i < $cnt; $i++) {
    ${"arr" . $i} = array_intersect(${"arr" . ($i-1)}, ${"arr" . $i}); //比较数组交集
}
print_r($arr1); //输出结果为:array('banana');

Dalam contoh ini, kami mentakrifkan 4 tatasusunan: $arr1, $arr2, $arr3 dan $arr4, setiap satu mengandungi beberapa nama buah. Menggunakan gelung for, kami membandingkan persilangan tatasusunan ini dan menyimpan hasil dalam tatasusunan yang sama. Akhir sekali, kami mencetak tatasusunan yang mengandungi elemen persimpangan, dan hasilnya hanya mengandungi "pisang". Contoh ini menggambarkan kemudahan fungsi array_intersect() apabila membandingkan berbilang tatasusunan.

  1. Kekalkan nama kunci tatasusunan asal

Secara lalai, fungsi array_intersect() akan mengekalkan nama kunci tatasusunan asal. Tetapi jika kita mahu memaksa nama kunci untuk ditetapkan semula, kita boleh menggunakan fungsi array_values(). Contohnya:

$arr1 = array('name' => 'Tom', 'age' => 32);
$arr2 = array('name' => 'Jerry', 'age' => 25);
$arr3 = array_intersect($arr1, $arr2);
print_r($arr3); //输出结果为:array('name' => 'Jerry', 'age' => 25);
$arr4 = array_values(array_intersect($arr1, $arr2));
print_r($arr4); //输出结果为:array('Jerry', 25);

Dalam contoh ini, kami mentakrifkan dua tatasusunan bersekutu $arr1 dan $arr2, yang mengandungi beberapa maklumat asas. Gunakan fungsi array_intersect() untuk membandingkan persilangan dua tatasusunan dan mengekalkan nama kunci asal, dan kemudian gunakan fungsi print_r() sekali lagi untuk mencetak hasilnya. Output kini mengandungi nama kunci asal "nama" dan "umur". Seterusnya, kami menggunakan fungsi array_values() untuk menanggalkan kekunci asal, hanya meninggalkan elemen persimpangan dan mencetak hasilnya. Pada masa ini, hasil output hanya mengandungi elemen persilangan "Jerry" dan "25", menunjukkan bahawa fungsi array_values() telah mengalih keluar nama kunci asal.

  1. Bandingkan persilangan tatasusunan berbilang dimensi

Fungsi array_intersect() juga sesuai untuk perbandingan tatasusunan berbilang dimensi. Sebagai contoh, kita boleh menggunakan array_intersect($arr1, $arr2, $arr3) untuk membandingkan persilangan berbilang tatasusunan satu dimensi, atau kita boleh menggunakan array_intersect($arr1[0], $arr2[0], $arr3[0 ]) untuk Membandingkan persilangan tatasusunan berbilang dimensi. Contohnya:

$arr1 = array(
    array('name' => 'Tom', 'age' => 32),
    array('name' => 'Jerry', 'age' => 25),
    array('name' => 'Mickey', 'age' => 28)
);
$arr2 = array(
    array('name' => 'Jerry', 'age' => 25),
    array('name' => 'Mickey', 'age' => 28),
    array('name' => 'Donald', 'age' => 30)
);
$arr3 = array(
    array('name' => 'Tom', 'age' => 32),
    array('name' => 'Jerry', 'age' => 25),
    array('name' => 'Mickey', 'age' => 28)
);
$arr4 = array_intersect($arr1[0], $arr2[0], $arr3[0]);
print_r($arr4); //输出结果为:array('name' => 'Jerry', 'age' => 25);

Dalam contoh ini, kami mentakrifkan 4 tatasusunan berbilang dimensi: $arr1, $arr2, $arr3 dan $arr4. Gunakan fungsi array_intersect() untuk membandingkan persilangan tatasusunan ini dan hasilnya hanya mengandungi maklumat tentang "Jerry". Contoh ini menggambarkan bahawa fungsi array_intersect() sesuai untuk perbandingan tatasusunan berbilang dimensi dan sintaksnya sangat mudah.

3. Ringkasan

Fungsi array_intersect() sangat praktikal dalam pembangunan PHP dengan mudah boleh membandingkan persilangan antara berbilang tatasusunan dan mengembalikan elemen berulang. Artikel ini memperkenalkan penggunaan asas fungsi ini dan beberapa kemahiran praktikal, termasuk mengalih keluar elemen pendua, membandingkan persilangan berbilang tatasusunan, mengekalkan nama kunci tatasusunan asal dan membandingkan persilangan tatasusunan berbilang dimensi. Teknik ini boleh membantu pembangun PHP menggunakan fungsi array_intersect() dengan lebih baik dan meningkatkan kecekapan pembangunan dan kualiti kod.

Atas ialah kandungan terperinci Petua praktikal untuk fungsi PHP: array_intersect(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn