Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mencari perbezaan antara dua tatasusunan dalam php

Bagaimana untuk mencari perbezaan antara dua tatasusunan dalam php

zbt
zbtasal
2023-08-04 17:04:462041semak imbas

Cara mencari perbezaan antara dua tatasusunan dalam PHP: 1. Gunakan fungsi array_diff() Fungsi ini menerima dua atau lebih tatasusunan sebagai parameter dan mengembalikan elemen yang muncul dalam tatasusunan yang lain 2 . Gunakan gelung dan fungsi in_array() untuk merentasi elemen tatasusunan pertama satu demi satu, dan gunakan fungsi in_array() untuk memeriksa sama ada elemen itu wujud dalam tatasusunan kedua 3. Gunakan fungsi array_diff_key(); . Gunakan fungsi array_udiff (), dsb.

Bagaimana untuk mencari perbezaan antara dua tatasusunan dalam php

Persekitaran pengendalian tutorial ini: sistem windows10, versi php8.1.3, komputer DELL G3.

Dalam PHP, kita selalunya perlu memproses dan membandingkan tatasusunan. Satu operasi biasa ialah mencari perbezaan antara dua tatasusunan, iaitu mencari elemen yang muncul dalam satu tatasusunan tetapi tidak dalam tatasusunan yang lain. Artikel ini akan memperkenalkan beberapa kaedah untuk mencapai operasi ini.

Kaedah 1: Gunakan fungsi array_diff()

Cara paling mudah ialah menggunakan fungsi array_diff() terbina dalam PHP. Fungsi ini menerima dua atau lebih tatasusunan sebagai argumen dan mengembalikan elemen yang muncul dalam tatasusunan pertama tetapi tidak terdapat dalam tatasusunan lain.

Kod sampel adalah seperti berikut:

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];
$result = array_diff($array1, $array2);
print_r($result);

Hasil output ialah:

Array
(
[0] => 1
[1] => 2
)

Ini menunjukkan bahawa elemen yang muncul dalam $array1 tetapi tidak wujud dalam $array2 ialah 1 dan 2.

Kaedah 2: Gunakan fungsi gelung dan in_array()

Selain fungsi array_diff(), kita juga boleh menggunakan fungsi gelung dan in_array() untuk mencari perbezaan antara dua tatasusunan. Kaedah ini berulang melalui elemen tatasusunan pertama satu demi satu dan menyemak sama ada elemen itu hadir dalam tatasusunan kedua menggunakan fungsi in_array().

Kod sampel adalah seperti berikut:

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];
$result = [];
foreach ($array1 as $element) {
if (!in_array($element, $array2)) {
$result[] = $element;
}
}
print_r($result);

Hasil output ialah:

Array
(
[0] => 1
[1] => 2
)

Kaedah tiga:

Kaedah lain ialah menggunakan fungsi array_diff_key(). Fungsi ini menerima dua atau lebih tatasusunan sebagai argumen dan mengembalikan nilai utama yang wujud dalam tatasusunan pertama tetapi tidak dalam tatasusunan lain.

Kod sampel adalah seperti berikut:

$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['c' => 3, 'd' => 4, 'e' => 5];
$result = array_diff_key($array1, $array2);
print_r($result);

Hasil output ialah:

Array
(
[a] => 1
[b] => 2
)

Ini menunjukkan bahawa nilai kunci yang wujud dalam $array1 tetapi bukan dalam $array2 ialah 'a' dan 'b'.

Kaedah 4: Gunakan fungsi array_udiff()

Kaedah terakhir ialah menggunakan fungsi array_udiff(). Fungsi ini memerlukan fungsi perbandingan yang ditentukan pengguna tambahan untuk dihantar untuk membandingkan elemen tatasusunan.

Kod sampel adalah seperti berikut:

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];
$result = array_udiff($array1, $array2, function($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
});
print_r($result);

Hasil output ialah:

Array
(
[0] => 1
[1] => 2
)

Ringkasan

Terdapat banyak cara untuk mencari perbezaan antara dua tatasusunan dalam PHP, termasuk menggunakan fungsi arrayray_diff(), gelung dan in_ar () fungsi, array_diff_key() fungsi dan array_udiff() fungsi. Pilih kaedah yang sesuai untuk melaksanakan pengiraan perbezaan berdasarkan keperluan khusus dan keperluan prestasi .

Atas ialah kandungan terperinci Bagaimana untuk mencari perbezaan antara dua tatasusunan 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