Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mendapatkan nilai yang berbeza dalam dua tatasusunan dalam php

Bagaimana untuk mendapatkan nilai yang berbeza dalam dua tatasusunan dalam php

PHPz
PHPzasal
2023-04-20 10:07:30634semak imbas

Dalam PHP, untuk mendapatkan elemen berbeza dalam dua tatasusunan, kita boleh menggunakan fungsi array_diff(). Fungsi ini mengembalikan tatasusunan baharu yang terdiri daripada elemen yang terdapat dalam tatasusunan 1 tetapi tidak hadir dalam tatasusunan 2.

Berikut ialah contoh, dengan mengandaikan bahawa dua tatasusunan yang ingin kita bandingkan ialah $arr1 dan $arr2:

$arr1 = array("apple", "banana", "orange");
$arr2 = array("banana", "orange", "pear", "kiwi");
$result = array_diff($arr1, $arr2);
print_r($result); // 输出:Array ( [0] => apple )

Dalam contoh ini, elemen "epal" dalam $arr1 ialah not muncul dalam $arr2, jadi ia dikembalikan kepada tatasusunan $result.

Tetapi ketahui bahawa array_diff() hanya membandingkan tatasusunan satu dimensi. Jika anda ingin membandingkan tatasusunan berbilang dimensi, anda perlu menulis sendiri fungsi rekursif. Berikut ialah contoh membandingkan tatasusunan berbilang dimensi:

function array_diff_multi($arr1, $arr2) {
    $diff = array();
    foreach ($arr1 as $key => $value) {
        if (is_array($value) && isset($arr2[$key]) && is_array($arr2[$key])) {
            $diff[$key] = array_diff_multi($value, $arr2[$key]);
        } else {
            if (!in_array($value, $arr2)) {
                $diff[$key] = $value;
            }
        }
    }
    return $diff;
}

$arr1 = array("fruit" => array("apple", "banana", "orange"), "color" => "blue");
$arr2 = array("fruit" => array("banana", "orange", "pear", "kiwi"), "color" => "red");
$result = array_diff_multi($arr1, $arr2);
print_r($result); // 输出:Array ( [fruit] => Array ( [0] => apple ) [color] => blue )

Dalam contoh ini, kami mencipta array_diff_multi() fungsi tersuai yang membandingkan dua tatasusunan berbilang dimensi. Kami menggunakan rekursi untuk membandingkan elemen setiap sub-tatasusunan.

Ringkasnya, terdapat banyak cara untuk mendapatkan elemen berbeza dua tatasusunan dalam PHP. Fungsi array_diff() ialah salah satu kaedah yang paling mudah dan paling biasa digunakan, tetapi ia hanya berfungsi dengan tatasusunan satu dimensi. Jika anda ingin membandingkan tatasusunan berbilang dimensi, anda perlu menggunakan fungsi rekursif tersuai.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan nilai yang berbeza dalam 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