Maison >développement back-end >Problème PHP >Comment supprimer un certain sous-tableau dans un tableau à deux dimensions en php

Comment supprimer un certain sous-tableau dans un tableau à deux dimensions en php

PHPz
PHPzoriginal
2023-04-20 13:51:46724parcourir

Dans le processus de développement PHP, le tableau est un type de données extrêmement important, qui peut facilement stocker et représenter de grandes quantités de données. Parfois, nous devons supprimer certains tableaux d’un tableau à deux dimensions. Que devons-nous faire ? Cet article présentera deux méthodes différentes pour atteindre cet objectif.

Méthode 1 : Utiliser la fonction array_filter

La fonction array_filter est une fonction intégrée à PHP, utilisée pour filtrer les éléments d'un tableau. Nous pouvons utiliser cette fonction pour supprimer certains tableaux d'un tableau à deux dimensions. L'implémentation spécifique est la suivante :

function removeArray($arr, $remove)
{
    return array_filter($arr, function ($item) use ($remove) {
        return !in_array($item, $remove);
    });
}

Dans le code ci-dessus, nous définissons une fonction nommée removeArray, qui accepte deux paramètres :

  • $arr : représente le tableau bidimensionnel dont le tableau doit être supprimé.
  • $remove : indique l'ensemble de tableaux qui doit être supprimé.

Ensuite, nous utilisons la fonction array_filter pour filtrer le tableau $arr. Dans la fonction de rappel, nous utilisons la fonction in_array pour déterminer si le tableau actuellement parcouru doit être éliminé. Renvoie false s'il doit être éliminé, true sinon. Enfin, le tableau filtré est le résultat dont nous avons besoin.

Cas d'utilisation :

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);

Résultat de sortie :

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)

Méthode 2 : utiliser la fonction array_udiff

Une autre méthode consiste à utiliser la fonction array_udiff. Cette fonction est utilisée pour calculer l'ensemble de différences de tableaux. Elle peut personnaliser une fonction de rappel pour comparer les tableaux afin d'obtenir les fonctions requises.

L'implémentation spécifique est la suivante :

function removeArray($arr, $remove)
{
    return array_udiff($arr, $remove, function ($a, $b) {
        return ($a == $b) ? 0 : 1;
    });
}

Dans le code ci-dessus, nous sommes similaires à la méthode 1 et définissons une fonction nommée removeArray. La fonction accepte deux paramètres, $arr et $remove, qui représentent respectivement l'ensemble de tableaux dont le tableau doit être supprimé et l'ensemble de tableaux qui doit être supprimé.

Nous utilisons la fonction array_udiff pour comparer le tableau $arr et le tableau $remove, exécuter la fonction personnalisée, comparer les éléments du tableau et renvoyer le résultat.

Cas d'utilisation :

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);

Résultat de sortie :

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)

En résumé, il existe deux façons de supprimer certains tableaux d'un tableau bidimensionnel, qui consistent à utiliser la fonction array_filter et la fonction array_udiff. Les deux sont des méthodes couramment utilisées, et celle à utiliser dépend de vos besoins.

Il convient de noter que si le même sous-tableau existe dans le tableau, la première méthode (array_filter) ne fonctionne pas bien, car les tableaux ne peuvent pas être directement comparés en PHP et la fonction array_diff_assoc doit être utilisée.

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