Maison  >  Article  >  développement back-end  >  Comment supprimer les doublons des tableaux multidimensionnels en php

Comment supprimer les doublons des tableaux multidimensionnels en php

PHPz
PHPzoriginal
2023-03-29 10:12:441319parcourir

Ces dernières années, avec la popularisation et le développement en profondeur de la technologie Web, PHP a reçu de plus en plus d'attention et est utilisé comme langage de script facile à apprendre et capable de créer rapidement des sites Web dynamiques. En PHP, les tableaux multidimensionnels sont un type de données courant, et la suppression des éléments en double est également une opération courante. Dans cet article, nous présenterons des moyens de supprimer les éléments en double des tableaux multidimensionnels en PHP.

Tout d’abord, nous devons comprendre ce qu’est un tableau multidimensionnel. Un tableau multidimensionnel fait référence à la structure de données d'un tableau imbriqué dans un tableau, c'est-à-dire que les éléments du tableau sont toujours des tableaux. Par exemple, voici la définition d'un tableau unidimensionnel et d'un tableau bidimensionnel :

$oneDimensionArray = array(1, 2, 3, 4);
$twoDimensionArray = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(1, 2, 3)
);

On peut constater que les éléments du tableau $twoDimensionArray existent sous la forme d'un tableau, c'est-à-dire que le tableau $twoDimensionArray est un tableau à deux dimensions.

Ensuite, voyons comment supprimer les éléments en double d'un tableau multidimensionnel. Lorsque nous souhaitons supprimer les éléments en double d’un tableau unidimensionnel, nous pouvons le faire via la fonction intégrée PHP array_unique(). Cependant, pour les tableaux multidimensionnels, la fonction array_unique() ne peut pas être utilisée directement et nous devons recourir à d'autres méthodes.

Méthode 1 : Utiliser la sérialisation et la désérialisation

Nous pouvons utiliser les fonctions de sérialisation et de désérialisation en PHP pour résoudre le problème de la déduplication de tableaux multidimensionnels. La sérialisation fait référence au processus de conversion d'une variable en chaîne, et la désérialisation est le processus de restauration d'une chaîne en variable. Nous pouvons réaliser la fonction de déduplication de tableau multidimensionnel en sérialisant le tableau multidimensionnel en une chaîne, puis en utilisant la fonction array_unique() pour dédupliquer le tableau de chaînes, et enfin en désérialisant la chaîne en un tableau multidimensionnel. Le code est le suivant :

// 定义一个二维数组
$twoDimensionArray = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(1, 2, 3)
);

// 序列化数组
$serializedArray = array_map('serialize', $twoDimensionArray);

// 去重
$uniqueArray = array_unique($serializedArray);

// 反序列化数组
$twoDimensionArray = array_map('unserialize', $uniqueArray);

print_r($twoDimensionArray);

Les résultats d'exécution sont les suivants :

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

)

On peut voir que les méthodes de sérialisation et de désérialisation suppriment avec succès les éléments en double dans le tableau $twoDimensionArray.

Méthode 2 : Utiliser des fonctions récursives

En plus des méthodes de sérialisation et de désérialisation, nous pouvons également utiliser des fonctions récursives pour réaliser la fonction de déduplication des tableaux multidimensionnels. Une fonction récursive fait référence à une méthode qui appelle la fonction elle-même au sein de la fonction pour implémenter le traitement récursif d'opérations complexes. Ici, nous pouvons écrire une fonction récursive pour parcourir chaque élément du tableau multidimensionnel, déterminer s'il s'agit d'un élément en double, puis effectuer un traitement de déduplication basé sur le résultat de la détermination. Le code est le suivant :

function arrayUniqueRecursive($input)
{
    // 判断是否为数组
    if (!is_array($input)) {
        return $input;
    }

    // 定义结果数组
    $result = array();

    foreach ($input as $key => $value) {
        // 判断是否为嵌套数组
        if (is_array($value)) {
            $result[$key] = arrayUniqueRecursive($value);
        } else {
            $result[$key] = $value;
        }
    }

    // 去重
    $result = array_map('unserialize', array_unique(array_map('serialize', $result)));

    return $result;
}

// 定义一个二维数组
$twoDimensionArray = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(1, 2, 3)
);

$twoDimensionArray = arrayUniqueRecursive($twoDimensionArray);
print_r($twoDimensionArray);

Les résultats d'exécution sont les suivants :

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

)

On peut voir que la méthode de fonction récursive supprime également avec succès les éléments en double dans le tableau $twoDimensionArray.

En résumé, pour les tableaux multidimensionnels en PHP, nous pouvons utiliser des méthodes de sérialisation et de désérialisation ou des méthodes de fonctions récursives pour réaliser des opérations de déduplication. Quelle que soit la méthode, vous pouvez résoudre efficacement le problème de la déduplication de tableaux multidimensionnels, rendant les applications PHP plus flexibles et efficaces.

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