Heim >Backend-Entwicklung >PHP-Problem >So ermitteln Sie, ob Array-Werte in PHP gleich sind

So ermitteln Sie, ob Array-Werte in PHP gleich sind

PHPz
PHPzOriginal
2023-04-18 09:47:27752Durchsuche

In PHP ist es eine häufige Anforderung, festzustellen, ob die Werte von Arrays gleich sind. Obwohl PHP viele Funktionen zum Betreiben und Verarbeiten von Arrays bereitstellt, benötigen wir manchmal benutzerdefinierte Funktionen, um unsere Anforderungen zu erfüllen, beispielsweise um festzustellen, ob Arrays gleich sind.

Zunächst müssen wir ein Konzept klären, nämlich was ist „Wertgleichheit“ von Arrays? In PHP können wir den Gleichheitsoperator „==“ verwenden, um Werte zu vergleichen. Zwei Arrays gelten als gleich, wenn ihre Elementwerte und ihre Elementreihenfolge gleich sind. Beispielsweise sind die folgenden zwei Arrays gleich:

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

Wenn jedoch die Reihenfolge der Elemente der beiden Arrays unterschiedlich ist oder die Anzahl der Elemente unterschiedlich ist, werden sie nicht als gleich betrachtet. Beispielsweise sind die folgenden zwei Arrays nicht gleich:

$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";
}

Basierend auf der obigen Definition können wir eine Funktion schreiben, um zu bestimmen, ob zwei Arrays gleich sind:

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;
}

Diese Funktion akzeptiert zwei Arrays als Parameter und gibt einen booleschen Wert zurück. Wenn Sie diese Funktion ausführen, gibt sie true zurück, wenn die Elementwerte und die Elementreihenfolge beider Arrays gleich sind, andernfalls gibt sie false zurück. Das Implementierungsprinzip dieser Funktion lautet: Vergleichen Sie zuerst die Anzahl der Elemente in den beiden Arrays. Wenn sie unterschiedlich sind, geben Sie direkt false zurück. Vergleichen Sie dann nacheinander, ob die Elemente in $a in $b erscheinen. Wenn nicht, geben Sie false zurück.

Diese Funktion kann direkt verwendet werden, zum Beispiel:

$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";
}

Das Ausgabeergebnis lautet: „Die beiden Arrays sind nicht gleich“.

Diese Funktion kann jedoch nur eindimensionale Arrays vergleichen. Wenn Sie mehrdimensionale Arrays vergleichen müssen, müssen Sie einen rekursiven Vergleich durchführen. Das Folgende ist eine Funktionsimplementierung zum rekursiven Vergleich mehrdimensionaler Arrays:

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;
}

Das Implementierungsprinzip dieser Funktion ähnelt der obigen Funktion, außer dass sie sich selbst aufrufen muss, wenn mehrdimensionale Arrays rekursiv verglichen werden.

Zusammenfassend ist die Beurteilung, ob die Werte von Arrays gleich sind, eines der häufigsten Probleme bei der PHP-Programmierung. Durch benutzerdefinierte Funktionen können wir diese Anforderung problemlos erfüllen. Unabhängig davon, ob es sich um ein eindimensionales Array oder ein mehrdimensionales Array handelt, kann es rekursiv implementiert werden.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob Array-Werte in PHP gleich sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn