Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang penggunaan fungsi array_intersect_uassoc() PHP

Penjelasan terperinci tentang penggunaan fungsi array_intersect_uassoc() PHP

WBOY
WBOYasal
2023-06-27 09:21:31870semak imbas

array_intersect_uassoc() ialah fungsi yang sangat berguna dalam bahasa PHP Ia boleh digunakan untuk membandingkan kunci dan nilai kunci dua atau lebih tatasusunan dan mengembalikan tatasusunan baharu yang mengandungi semua kunci dan nilai kunci dalam. semua tatasusunan input. Dalam artikel ini, kami akan memperkenalkan penggunaan fungsi array_intersect_uassoc() secara terperinci dan memberikan beberapa contoh yang mudah difahami.

Contoh penggunaan asas ialah:

$array1 = array("a" => "green", "b" => "blue", "c" => "red");
$array2 = array("a" => "green", "b" => "blue", "d" => "yellow");
$result = array_intersect_uassoc($array1, $array2, "compareFunc");
print_r($result);

Dalam contoh ini, kita mempunyai dua tatasusunan, $array1 dan $array2, kedua-duanya mengandungi beberapa kekunci yang berbeza dan nilai kunci yang sepadan. Kami menghantar dua tatasusunan ini kepada fungsi array_intersect_uassoc() dan menentukan fungsi panggil balik bernama "compareFunc". Fungsi ini akan membandingkan hubungan antara elemen tatasusunan dan mewakili hubungannya dengan mengembalikan nilai integer. Dalam contoh ini, kami mencetak nilai pembolehubah tatasusunan $result untuk melihat persimpangan yang dikembalikan oleh fungsi.

Perlu dinyatakan bahawa kita perlu menentukan fungsi panggil balik yang akan digunakan untuk membandingkan kekunci dan nilai kunci tatasusunan. Parameter $key1 dan $key2 masing-masing akan menerima nama kunci kedua-dua tatasusunan, dan parameter $value1 dan $value2 masing-masing akan menerima nilai kunci kedua-dua tatasusunan. Dalam fungsi tersebut, kami akan menggunakan fungsi strcmp() untuk perbandingan rentetan, yang akan mengembalikan 0 jika dua rentetan adalah sama, jika tidak ia akan mengembalikan nilai positif atau negatif.

function compareFunc($key1, $key2, $value1, $value2)
{
    $cmp_key = strcmp($key1, $key2);
    if ($cmp_key == 0) {
        $cmp_value = strcmp($value1, $value2);
        return $cmp_value;
    } else {
        return $cmp_key;
    }
}

Memandangkan kami menghantar fungsi compareFunc() tersuai ke fungsi array_intersect_uassoc() sebagai parameter ketiga dalam langkah sebelumnya, fungsi ini akan dipanggil apabila membandingkan dua tatasusunan. Katakan terdapat elemen berikut dalam tatasusunan:

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4);
$array2 = array("a"=>1, "b"=>3, "c"=>5, "d"=>6);

Selepas menjalankan array_intersect_uassoc($array1, $array2, "compareFunc"), tatasusunan baharu akan dikembalikan, yang elemennya akan menjadi elemen yang wujud dalam kedua-dua tatasusunan input Contohnya ialah: array("a"=>1).

Selain menggunakan fungsi perbandingan rentetan untuk membandingkan elemen tatasusunan, fungsi array_intersect_uassoc() juga menyokong penggunaan fungsi perbandingan tersuai untuk perbandingan. Sebagai contoh, katakan kita mempunyai dua tatasusunan berikut:

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4);
$array2 = array("a"=>1, "b"=>3, "c"=>5, "d"=>6);

Kita boleh menggunakan fungsi panggil balik yang berbeza untuk membandingkan dua tatasusunan ini. Seseorang mungkin membandingkan dua integer, manakala yang lain membandingkan dua rentetan. Kita boleh melaksanakan fungsi perbandingan seperti ini:

function compareFuncInt($a, $b)
{
   if($a === $b) return 0;
   return ($a > $b) ? 1 : -1;
}

function compareFuncStr($a, $b)
{
    return strcmp($a, $b);
}

Apabila memanggil fungsi array_intersect_uassoc(), kita hanya perlu menentukan fungsi perbandingan yang berbeza:

$result1 = array_intersect_uassoc($array1, $array2, "compareFuncInt");
$result2 = array_intersect_uassoc($array1, $array2, "compareFuncStr");

Dalam contoh ini, kami menggunakan fungsi compareFuncInt() dan compareFuncStr() tersuai, The bekas digunakan untuk perbandingan integer, manakala yang terakhir digunakan untuk perbandingan rentetan. Selepas fungsi perbandingan, kami menyimpan hasil keseluruhan perbandingan dalam tatasusunan hasil yang berbeza untuk tontonan mudah.

Ringkasnya, array_intersect_uassoc() ialah fungsi yang berkuasa dan fleksibel yang boleh membandingkan kekunci dan nilai kunci berbilang tatasusunan dan mengeluarkan persilangannya. Fungsi ini mempunyai banyak pilihan penggunaan dan konfigurasi yang berbeza, jadi anda harus fleksibel mengikut keperluan sebenar anda.

Atas ialah kandungan terperinci Penjelasan terperinci tentang penggunaan fungsi array_intersect_uassoc() PHP. 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