Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menentukan sama ada nilai tatasusunan adalah sama dalam php

Bagaimana untuk menentukan sama ada nilai tatasusunan adalah sama dalam php

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

Dalam PHP, adalah keperluan biasa untuk menentukan sama ada nilai tatasusunan adalah sama. Walaupun PHP menyediakan banyak fungsi untuk mengendalikan dan memproses tatasusunan, kadangkala kami memerlukan fungsi tersuai untuk mencapai keperluan kami, seperti menentukan sama ada tatasusunan adalah sama.

Pertama sekali, kita perlu menjelaskan konsep, iaitu, apakah "kesamaan nilai" tatasusunan? Dalam PHP, kita boleh menggunakan operator kesamaan "==" untuk membandingkan nilai. Dua tatasusunan dianggap sama apabila nilai elemen dan susunan elemennya adalah sama. Sebagai contoh, dua tatasusunan berikut adalah sama:

$a = array('apple', 'banana', 'cherry');
$b = array('apple', 'banana', 'cherry');
if ($a == $b) {
    echo "the two arrays are equal";
}

Walau bagaimanapun, apabila susunan elemen kedua-dua tatasusunan berbeza atau bilangan elemen berbeza, ia tidak dianggap sama. Sebagai contoh, dua tatasusunan berikut tidak sama:

$a = array('apple', 'banana', 'cherry');
$b = array('cherry', 'banana', 'apple');
if ($a == $b) {
    echo "the two arrays are equal";
} else {
    echo "the two arrays are not equal";
}

Berdasarkan takrifan di atas, kita boleh menulis fungsi untuk menentukan sama ada dua tatasusunan adalah sama:

function arrays_are_equal($a, $b) {
    if (count($a) != count($b)) {
        return false;
    }
    foreach ($a as $key => $value) {
        if (!in_array($value, $b)) {
            return false;
        }
    }
    return true;
}

Ini fungsi menerima dua mengambil tatasusunan sebagai parameter dan mengembalikan nilai Boolean. Apabila anda menjalankan fungsi ini, ia mengembalikan benar jika nilai elemen dan susunan elemen kedua-dua tatasusunan adalah sama, jika tidak ia mengembalikan palsu. Prinsip pelaksanaan fungsi ini ialah: mula-mula bandingkan bilangan elemen dalam dua tatasusunan, jika ia berbeza, kembalikan palsu secara langsung kemudian bandingkan satu demi satu sama ada elemen dalam $a muncul dalam $b, jika tidak, kembalikan palsu;

Fungsi ini boleh digunakan secara terus, contohnya:

$a = array('apple', 'banana', 'cherry');
$b = array('cherry', 'banana', 'apple');
if (arrays_are_equal($a, $b)) {
    echo "the two arrays are equal";
} else {
    echo "the two arrays are not equal";
}

Hasil keluaran ialah: "dua tatasusunan tidak sama".

Walau bagaimanapun, fungsi ini hanya boleh membandingkan tatasusunan satu dimensi. Jika anda perlu membandingkan tatasusunan berbilang dimensi, anda perlu melakukan perbandingan rekursif. Berikut ialah pelaksanaan fungsi untuk membandingkan tatasusunan berbilang dimensi secara rekursif:

function multidimensional_arrays_are_equal($a, $b) {
    if (count($a) != count($b)) {
        return false;
    }
    foreach ($a as $key => $value) {
        if (is_array($value)) {
            if (!multidimensional_arrays_are_equal($value, $b[$key])) {
                return false;
            }
        } else {
            if (!in_array($value, $b)) {
                return false;
            }
        }
    }
    return true;
}

Prinsip pelaksanaan fungsi ini adalah serupa dengan fungsi di atas, kecuali ia perlu memanggil dirinya sendiri apabila membandingkan tatasusunan berbilang dimensi secara rekursif .

Ringkasnya, menilai sama ada nilai tatasusunan adalah sama adalah salah satu masalah biasa dalam pengaturcaraan PHP. Melalui fungsi tersuai, kami boleh mencapai keperluan ini dengan mudah. Sama ada tatasusunan satu dimensi atau tatasusunan berbilang dimensi, ia boleh dilaksanakan secara rekursif.

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