Maison >développement back-end >Problème PHP >Si un tableau contient un certain tableau php

Si un tableau contient un certain tableau php

王林
王林original
2023-05-07 19:20:351019parcourir

En PHP, nous pouvons manipuler les tableaux de différentes manières. Une opération utile consiste à vérifier si un tableau contient un autre tableau. Cette opération peut être utilisée dans de nombreuses applications, par exemple lors de la traversée d'un tableau multidimensionnel pour rechercher un élément spécifique, ou lors de l'envoi de requêtes et de réponses à l'aide d'une API RESTful.

Ce qui suit présentera deux méthodes en PHP pour vérifier si un tableau contient un autre tableau.

Méthode 1 : utilisez la fonction in_array()

La fonction in_array() peut déterminer si une valeur se trouve dans un tableau. Par conséquent, nous pouvons d’abord parcourir le tableau que nous recherchons, puis utiliser la fonction in_array() pour déterminer si le tableau cible contient ce tableau. Voici un exemple de code :

function checkArrayExists($needle, $haystack) {
    // 遍历 $needle 数组
    foreach ($needle as $value) {
        // 判断 $haystack 是否包含 $value
        if (!in_array($value, $haystack)) {
            return false;
        }
    }
    return true;
}

// 测试代码
$haystack = array('foo', 'bar', 'baz');
$needle1 = array('foo', 'baz');
$needle2 = array('foo', 'qux');

if (checkArrayExists($needle1, $haystack)) {
    echo 'needle1 is in haystack';
} else {
    echo 'needle1 is not in haystack';
}

if (checkArrayExists($needle2, $haystack)) {
    echo 'needle2 is in haystack';
} else {
    echo 'needle2 is not in haystack';
}

Le code ci-dessus définit une fonction appelée checkArrayExists(). Dans cette fonction, nous utilisons la fonction in_array() pour déterminer si une valeur se trouve dans le tableau cible, puis renvoyons le résultat correspondant. .

Notez que les valeurs du tableau coché doivent correspondre exactement, y compris le type de données.

Méthode 2 : Utiliser la fonction array_diff()

En PHP, la fonction array_diff() peut calculer la différence entre deux tableaux, c'est-à-dire renvoyer la valeur qui n'apparaît que dans un seul tableau. Si la différence entre les deux tableaux est vide, cela signifie que les deux tableaux correspondent exactement.

Par conséquent, nous pouvons convertir à la fois le tableau à trouver et le tableau cible en ensembles de différences, puis déterminer si leurs ensembles de différences sont vides. Voici un exemple de code :

function checkArrayExists($needle, $haystack) {
    $diff = array_diff($needle, $haystack);
    if (count($diff) == 0) {
        return true;
    }
    return false;
}

// 测试代码
$haystack = array('foo', 'bar', 'baz');
$needle1 = array('foo', 'baz');
$needle2 = array('foo', 'qux');

if (checkArrayExists($needle1, $haystack)) {
    echo 'needle1 is in haystack';
} else {
    echo 'needle1 is not in haystack';
}

if (checkArrayExists($needle2, $haystack)) {
    echo 'needle2 is in haystack';
} else {
    echo 'needle2 is not in haystack';
}

Le code ci-dessus définit une fonction appelée checkArrayExists(). Dans cette fonction, nous utilisons la fonction array_diff() pour calculer la différence entre deux tableaux et déterminer si la différence est vide, puis renvoyer le. résultat correspondant.

Quelle méthode est la meilleure ?

Les deux méthodes sont efficaces pour vérifier si un tableau contient un autre tableau. Cependant, en termes de performances, la méthode 2 est plus efficace en utilisant la fonction array_diff(), notamment lorsqu'il s'agit de grands tableaux. Par conséquent, la méthode 2 doit être utilisée pour les grands tableaux. Cependant, si la taille du tableau est relativement petite, la méthode 1 est suffisante et le code est plus concis et clair.

En résumé, comprendre ces deux méthodes peut nous permettre de faire fonctionner les baies plus efficacement et d'améliorer l'efficacité de la programmation.

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