Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menentukan sama ada dua tatasusunan adalah sama dalam php

Bagaimana untuk menentukan sama ada dua tatasusunan adalah sama dalam php

PHPz
PHPzasal
2023-04-18 09:47:211087semak imbas

PHP ialah bahasa skrip sebelah pelayan yang digunakan secara meluas yang boleh digunakan dalam banyak bidang seperti tapak web dinamik, pembangunan aplikasi web dan antara muka baris arahan. Dalam pembangunan PHP, menentukan sama ada tatasusunan adalah sama adalah masalah biasa. Artikel ini akan memperkenalkan cara untuk menentukan sama ada dua tatasusunan adalah sama dalam PHP.

Dalam PHP, tatasusunan ialah jenis data yang sangat penting yang digunakan untuk menyimpan set nilai atau set pasangan nilai kunci. PHP boleh mencipta tatasusunan dalam pelbagai cara, kaedah yang paling biasa adalah menggunakan literal tatasusunan atau menggunakan fungsi tatasusunan(). Contohnya:

$arr1 = [1, 2, 3];
$arr2 = array('a' => 1, 'b' => 2, 'c' => 3);

Untuk menentukan sama ada dua tatasusunan adalah sama, biasanya untuk menentukan sama ada unsur yang terkandung di dalamnya dan nilai unsur adalah sama. PHP menyediakan pelbagai kaedah untuk mencapai tujuan ini, dan penggunaannya diperkenalkan di bawah.

Kaedah 1: Gunakan operator ==

Operator == dalam PHP boleh digunakan untuk membandingkan sama ada dua tatasusunan adalah sama. Jika dua tatasusunan mengandungi elemen yang sama, tetapi dalam susunan yang berbeza, operator == juga akan menganggapnya sama. Contohnya:

$arr1 = [1, 2, 3];
$arr2 = [3, 2, 1];
if ($arr1 == $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

Keluaran kod di atas ialah "dua tatasusunan adalah sama" kerana $arr1 dan $arr2 mengandungi elemen yang sama, iaitu, 1, 2, 3, tetapi susunannya ialah berbeza.

Jika tatasusunan mengandungi tatasusunan bersarang, pengendali == hanya membandingkan rujukan tatasusunan bersarang dan bukan nilainya. Contohnya:

$arr1 = [[1, 2], [3, 4]];
$arr2 = [[1, 2], [3, 4]];
if ($arr1 == $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

Hasil keluaran kod di atas ialah "dua tatasusunan tidak sama" kerana $arr1 dan $arr2 mengandungi tatasusunan bersarang yang berbeza, iaitu [1, 2], [3, 4 ] dan [1, 2], [3, 4].

Kaedah 2: Gunakan operator ===

Berbeza dengan operator ==, operator === dalam PHP juga membandingkan jenis dua tatasusunan. Jika dua tatasusunan mempunyai elemen yang sama dan nilai elemen yang sama, dan jenisnya juga sama, maka operator === menganggapnya sama. Contohnya:

$arr1 = [1, 2, 3];
$arr2 = array(1, 2, 3);
if ($arr1 === $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

Hasil keluaran kod di atas ialah "dua tatasusunan tidak sama" kerana walaupun $arr1 dan $arr2 mengandungi elemen yang sama, ia adalah daripada jenis yang berbeza array literal Dan $arr2 ialah tatasusunan yang dibuat menggunakan fungsi array().

Jika tatasusunan mengandungi tatasusunan bersarang, pengendali === juga akan membandingkan jenis dan nilai tatasusunan bersarang. Contohnya:

$arr1 = [[1, 2], [3, 4]];
$arr2 = [[1, 2], [3, 4]];
if ($arr1 === $arr2) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

Hasil keluaran kod di atas ialah "dua tatasusunan tidak sama", dan sebabnya adalah sama seperti kes dalam kaedah satu.

Kaedah 3: Gunakan fungsi array_diff

Walaupun kaedah di atas boleh menentukan sama ada dua tatasusunan adalah sama, disebabkan keperluan untuk membandingkan semua elemen, kaedah ini mungkin lebih perlahan atau intensif memori untuk besar tatasusunan Mengambil terlalu banyak ruang. Dalam kes ini, anda boleh menggunakan fungsi array_diff PHP untuk membandingkan tatasusunan. Fungsi ini digunakan untuk mengira perbezaan antara dua tatasusunan, iaitu unsur-unsur yang terkandung dalam satu tatasusunan tetapi tidak dalam tatasusunan yang lain. Jika perbezaan antara dua tatasusunan kosong, ia adalah sama. Contohnya:

$arr1 = [1, 2, 3];
$arr2 = [3, 2, 1];
if (empty(array_diff($arr1, $arr2)) && empty(array_diff($arr2, $arr1))) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

Hasil keluaran kod di atas ialah "dua tatasusunan adalah sama", sebabnya adalah sama seperti kes dalam kaedah satu.

Jika tatasusunan mengandungi tatasusunan bersarang, anda boleh memanggil fungsi array_diff secara rekursif. Contohnya:

$arr1 = [[1, 2], [3, 4]];
$arr2 = [[3, 4], [1, 2]];
if (empty(array_diff($arr1, $arr2)) && empty(array_diff($arr2, $arr1))) {
    echo "两个数组相等";
} else {
    echo "两个数组不相等";
}

function array_equal($arr1, $arr2) {
    if (count($arr1) != count($arr2)) {
        return false;
    }
    $d1 = array_diff($arr1, $arr2);
    $d2 = array_diff($arr2, $arr1);
    if (!empty($d1) || !empty($d2)) {
        return false;
    }
    foreach ($arr1 as $key => $value) {
        if (is_array($value) && is_array($arr2[$key])) {
            if (!array_equal($value, $arr2[$key])) {
                return false;
            }
        } else if ($value !== $arr2[$key]) {
            return false;
        }
    }
    return true;
}

Fungsi array_equal dalam kod di atas boleh membandingkan dua tatasusunan secara rekursif Untuk pemprosesan tatasusunan bersarang, ia juga memanggil fungsi array_diff untuk membandingkan set perbezaan.

Artikel ini memperkenalkan tiga kaedah dalam PHP untuk menentukan sama ada dua tatasusunan adalah sama, iaitu menggunakan operator ==, menggunakan operator === dan menggunakan fungsi array_diff. Apabila kita perlu menentukan sama ada tatasusunan adalah sama, kita boleh memilih salah satu daripada kaedah ini mengikut situasi tertentu.

Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada dua tatasusunan adalah sama 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