Maison >développement back-end >tutoriel php >Comment puis-je rechercher efficacement une valeur dans un tableau multidimensionnel en PHP ?

Comment puis-je rechercher efficacement une valeur dans un tableau multidimensionnel en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 16:52:10863parcourir

How Can I Effectively Search for a Value in a Multidimensional Array in PHP?

Recherche de tableau multidimensionnel avec in_array()

La fonction in_array() excelle dans la vérification de l'existence d'une valeur dans un tableau linéaire. Cependant, sa fonctionnalité est insuffisante lorsqu’il s’agit de tableaux multidimensionnels. Cet article explore les limites de in_array() dans les scénarios multidimensionnels et présente une solution récursive.

Limitations de in_array() avec les tableaux multidimensionnels

$ a = array("Mac", "NT", "Irix", "Linux");<br>if (in_array("Irix", $a)) echo "J'ai obtenu Irix"; // Works<br>

En revanche, appliquer in_array() à un tableau multidimensionnel, comme indiqué ci-dessous, donnera des résultats inexacts :

$b = array(array("Mac", "NT"), array("Irix", "Linux"));<br>if (in_array("Irix", $b)) echo "J'ai obtenu Irix"; // Échec<br>

Solution récursive pour la recherche de tableau multidimensionnel

Pour rechercher efficacement une valeur dans un tableau multidimensionnel, une approche récursive est requis. L'extrait de code suivant définit une fonction personnalisée à cet effet :

<br>function in_array_r($needle, $haystack, $strict = false) {</p>
<pre class="brush:php;toolbar:false">foreach ($haystack as $item) {
    if (($strict ? $item === $needle : $item == $needle) || (is_array($item) &amp;&amp; in_array_r($needle, $item, $strict))) {
        return true;
    }
}

return false;

}

Utilisation

La fonction in_array_r() est utilisée comme suit :

$b = array(array("Mac", "NT"), array("Irix", "Linux"));<br>echo in_array_r("Irix", $b) ? 'found' : 'not found';<br>

Cette solution permet des opérations de recherche efficaces et précises de valeurs dans des tableaux multidimensionnels.

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