Avec le développement d'Internet, PHP est devenu l'un des langages de programmation les plus populaires. Dans le développement PHP, il est souvent nécessaire d’utiliser la structure de données des tableaux. Dans le développement réel, nous devons souvent effectuer des opérations de déduplication sur les baies. Cet article vous expliquera comment supprimer les doublons des tableaux bidimensionnels en PHP.
Un tableau bidimensionnel est un grand tableau composé d'un ensemble de tableaux. Si nous devons dédupliquer ces tableaux, nous devons utiliser la fonction array_unique() en PHP. Cependant, si nous utilisons directement la fonction array_unique() pour supprimer les éléments en double dans un tableau à deux dimensions, nous ne pourrons pas obtenir l'effet souhaité.
Vous trouverez ci-dessous un exemple de tableau bidimensionnel où nous devons supprimer les doublons.
$arr = array( array('id'=>1, 'name'=>'Tom'), array('id'=>2, 'name'=>'Jerry'), array('id'=>3, 'name'=>'Bob'), array('id'=>1, 'name'=>'Tom') );
Si nous utilisons la fonction array_unique() pour supprimer les doublons, comme indiqué ci-dessous :
$arr = array_unique($arr);
Ensuite, nous constaterons que le résultat de l'exécution n'est pas celui attendu. Nous devons utiliser la méthode suivante pour supprimer correctement les doublons dans un tableau bidimensionnel.
Méthode 1 :
Nous convertissons d'abord le tableau qui doit être dédupliqué en chaîne, puis utilisons la fonction array_unique() pour supprimer les doublons. Enfin, convertissez le résultat en un tableau PHP.
$str = ''; foreach ($arr as $k => $v) { $str .= implode(',', $v) . ';'; } $str = implode(',', array_unique(explode(';', trim($str, ';')))); $arr = array(); foreach (explode(';', $str) as $k => $v) { $arr[$k] = explode(',', $v); } print_r($arr);
Bien que cette méthode puisse supprimer les éléments en double dans un tableau bidimensionnel, elle est plus lourde et peu efficace.
Méthode 2 :
Nous pouvons utiliser une autre fonction array_column() en PHP, qui peut extraire tout un champ d'un tableau à deux dimensions et renvoyer un tableau à une dimension.
$arr = array( array('id'=>1, 'name'=>'Tom'), array('id'=>2, 'name'=>'Jerry'), array('id'=>3, 'name'=>'Bob'), array('id'=>1, 'name'=>'Tom') ); $idArr = array_column($arr, 'id'); $countArr = array_count_values($idArr); foreach ($arr as $k => $v) { if ($countArr[$v['id']] > 1) { unset($arr[$k]); } } print_r($arr);
Cette méthode est relativement simple et ne nécessite que l'utilisation de deux fonctions. Utilisez d'abord la fonction array_column() pour extraire toutes les valeurs du champ id dans le tableau à deux dimensions, puis utilisez la fonction array_count_values() pour compter ces valeurs. Enfin, le tableau d'origine est parcouru. Si le nombre d'identifiants correspondant est supérieur à 1 dans le tableau $idArr, cela signifie que l'élément doit être supprimé.
Comme le montrent les deux méthodes ci-dessus, la déduplication des tableaux bidimensionnels est légèrement plus gênante que celle des tableaux unidimensionnels. Mais si nous adoptons des méthodes appropriées, nous pouvons encore supprimer les doublons relativement facilement.
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!