Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mendapatkan bahagian yang berbeza dari dua tatasusunan bersekutu dalam php

Bagaimana untuk mendapatkan bahagian yang berbeza dari dua tatasusunan bersekutu dalam php

PHPz
PHPzasal
2023-03-23 14:48:061297semak imbas

Dalam pembangunan PHP, kita sering menghadapi keperluan untuk membandingkan dua tatasusunan bersekutu dan mendapatkan bahagiannya yang berbeza. Di bawah ini kami akan memperkenalkan beberapa cara untuk mencapai fungsi ini.

Kaedah 1: Gunakan fungsi array_diff_assoc()

Fungsi array_diff_assoc() boleh digunakan untuk membandingkan pasangan nilai kunci dua tatasusunan bersekutu dan mengembalikannya ke dalam tatasusunan pertama Semua elemen dalam tatasusunan tetapi bukan tatasusunan lain, dan mengekalkan nama kunci dan nilai kunci.

Contoh kod:

$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_diff_assoc($array1, $array2);  
print_r($result);

Hasil output ialah:

Array
(
    [name] => 张三
    [salary] => 3000
)

Seperti yang anda lihat, tatasusunan hasil hanya mengandungi nama kunci "nama" dan " dalam tatasusunan 1 gaji" pasangan nilai kunci kerana mereka tidak muncul dalam tatasusunan 2.

Kaedah 2: Gunakan fungsi tersuai

Kaedah pelaksanaan lain adalah untuk menyesuaikan fungsi, dengan menggelungkan dua tatasusunan dan membandingkan pasangan nilai kunci mereka, perbezaannya ialah bahagian ditambahkan pada tatasusunan hasil.

Contoh kod:

function array_diff_custom($array1, $array2) {  
    $result = array();  
    foreach ($array1 as $key => $value) {  
        if (!array_key_exists($key, $array2) || ($array2[$key] != $value)) {  
            $result[$key] = $value;  
        }  
    }  
    return $result;  
}  
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_diff_custom($array1, $array2);  
print_r($result);

Hasil output ialah:

Array
(
    [name] => 张三
    [salary] => 3000
)

Begitu juga, tatasusunan hasil hanya mengandungi nama kunci "nama" dan "gaji" dalam tatasusunan 1 pasangan nilai kunci.

Kaedah 3: Gunakan fungsi array_udiff_assoc()

Fungsi array_udiff_assoc() adalah serupa dengan fungsi array_diff_assoc(), tetapi ia boleh menggunakan panggilan balik yang ditentukan pengguna berfungsi untuk membandingkan pasangan nilai kunci.

Contoh kod:

function compareByKeyValue($a, $b) {  
    if ($a === $b) {  
        return 0;  
    }  
    return ($a > $b) ? 1 : -1;  
}  
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_udiff_assoc($array1, $array2, "compareByKeyValue");  
print_r($result);

Hasil output ialah:

Array
(
    [name] => 张三
    [salary] => 3000
)

Kami mentakrifkan fungsi panggil balik compareByKeyValue() untuk membandingkan sama ada pasangan nilai kunci adalah sama . Dengan menghantar nama fungsi ini sebagai argumen ketiga kepada fungsi array_udiff_assoc(), kita boleh mencapai kesan yang serupa dengan fungsi array_diff_assoc().

Ringkasan

Artikel ini memperkenalkan tiga cara untuk mendapatkan bahagian berbeza daripada dua tatasusunan bersekutu dalam PHP: menggunakan fungsi array_diff_assoc() , fungsi tersuai dan fungsi array_udiff_assoc (). Kaedah yang anda pilih bergantung pada keperluan khusus dan tabiat peribadi. Sama ada cara, anda boleh meningkatkan kecekapan dan ketepatan apabila bekerja dengan tatasusunan bersekutu.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan bahagian yang berbeza dari dua tatasusunan bersekutu dalam 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