Maison >développement back-end >Problème PHP >Comment déterminer si les valeurs du tableau sont égales en php

Comment déterminer si les valeurs du tableau sont égales en php

PHPz
PHPzoriginal
2023-04-18 09:47:27755parcourir

En PHP, il est courant de déterminer si les valeurs des tableaux sont égales. Bien que PHP fournisse de nombreuses fonctions pour exploiter et traiter les tableaux, nous avons parfois besoin de fonctions personnalisées pour répondre à nos besoins, comme déterminer si les tableaux sont égaux.

Tout d'abord, nous devons clarifier un concept, à savoir : qu'est-ce que « l'égalité des valeurs » des tableaux ? En PHP, nous pouvons utiliser l'opérateur d'égalité "==" pour comparer des valeurs. Deux tableaux sont considérés comme égaux lorsque leurs valeurs d'éléments et l'ordre des éléments sont identiques. Par exemple, les deux tableaux suivants sont égaux :

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

Cependant, lorsque l'ordre des éléments des deux tableaux est différent ou que le nombre d'éléments est différent, ils ne sont pas considérés comme égaux. Par exemple, les deux tableaux suivants ne sont pas égaux :

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

Sur la base de la définition ci-dessus, nous pouvons écrire une fonction pour déterminer si deux tableaux sont égaux :

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

Cette fonction accepte deux tableaux comme paramètres et renvoie une valeur booléenne. Lorsque vous exécutez cette fonction, elle renvoie vrai si les valeurs des éléments et l'ordre des éléments des deux tableaux sont identiques, sinon elle renvoie faux. Le principe d'implémentation de cette fonction est : comparez d'abord le nombre d'éléments dans les deux tableaux, s'ils sont différents, retournez directement false ; puis comparez un par un si les éléments de $a apparaissent dans $b, sinon, retournez false.

Cette fonction peut être utilisée directement, par exemple :

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

Le résultat de sortie est : "les deux tableaux ne sont pas égaux".

Cependant, cette fonction ne peut comparer que des tableaux unidimensionnels. Si vous devez comparer des tableaux multidimensionnels, vous devez effectuer une comparaison récursive. Ce qui suit est une implémentation de fonction pour comparer récursivement des tableaux multidimensionnels :

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

Le principe d'implémentation de cette fonction est similaire à la fonction ci-dessus, sauf qu'elle doit s'appeler lors de la comparaison récursive de tableaux multidimensionnels.

En résumé, juger si les valeurs des tableaux sont égales est l'un des problèmes courants en programmation PHP. Grâce à des fonctions personnalisées, nous pouvons facilement répondre à cette exigence. Qu'il s'agisse d'un tableau unidimensionnel ou multidimensionnel, il peut être implémenté de manière récursive.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn