Maison  >  Article  >  développement back-end  >  Comment supprimer les valeurs en double d'un tableau à deux dimensions en PHP

Comment supprimer les valeurs en double d'un tableau à deux dimensions en PHP

PHPz
PHPzoriginal
2023-04-19 09:20:40571parcourir

En PHP, nous avons souvent besoin de gérer des tableaux, et l'une des questions courantes est de savoir comment supprimer les valeurs en double dans un tableau à deux dimensions. Ce problème n'est pas difficile à résoudre. Nous pouvons utiliser certaines fonctions de tableau fournies par PHP, telles que array_map, array_unique, array_filter, etc. Voyons ensuite comment supprimer les valeurs en double d'un tableau à deux dimensions. array_maparray_uniquearray_filter 等等。下面,就让我们来了解一下如何实现删除二维数组重复值的方法。

什么是二维数组?

二维数组是指一个数组中的元素也是一个数组,它可以表示为一个矩阵。在 PHP 中,我们可以使用以下方式创建一个二维数组:

$students = array(
    array('name' => '张三', 'age' => 18),
    array('name' => '李四', 'age' => 20),
    array('name' => '王五', 'age' => 22),
    array('name' => '赵六', 'age' => 18)
);

上面的代码中,我们创建了一个 $students 数组,其中每个元素也是一个数组,包含 nameage 两个键值对。这个数组可以理解为一个学生信息的表格。

删除重复值的方法

接下来,我们介绍若干种删除二维数组重复值的方法:

方法一:使用 foreach 循环

function remove_duplicate_by_foreach($arr){
    $result = array();//定义一个新数组,用来存放去重后的数据
    foreach($arr as $key => $value){
        $flag = false;
        foreach($result as $val){
            if($value == $val){
                $flag = true;
                break;
            }
        }
        if(!$flag){ //如果数据不重复,则将其添加到新数组中
            array_push($result, $value);
        }
    }
    return $result;
}

$students = array(
    array('name' => '张三', 'age' => 18),
    array('name' => '李四', 'age' => 20),
    array('name' => '王五', 'age' => 22),
    array('name' => '赵六', 'age' => 18),
    array('name' => '张三', 'age' => 18)
);
print_r(remove_duplicate_by_foreach($students));

上面的代码中,我们首先定义了一个空的 $result 数组,然后使用两个 foreach 循环遍历原数组 $arr,对于其中的每个元素 $value,在 $result 数组中查找是否存在相同的元素,如果不存在,则将其添加到 $result 数组中。

这种方法比较简单易懂,但是效率比较低,尤其是当数据较多时,遍历的时间会变得很长。

方法二:使用 array_map 和 array_unique 函数

function remove_duplicate_by_array_map($arr){
    $temp = array_map("serialize", $arr);//将数组中的每个元素都序列化
    $result = array_unique($temp);//去重操作
    $new_array = array();
    foreach ($result as $value) {//反序列化操作
        array_push($new_array, unserialize($value));
    }
    return $new_array;
}

$students = array(
    array('name' => '张三', 'age' => 18),
    array('name' => '李四', 'age' => 20),
    array('name' => '王五', 'age' => 22),
    array('name' => '赵六', 'age' => 18),
    array('name' => '张三', 'age' => 18)
);
print_r(remove_duplicate_by_array_map($students));

上面的代码中,我们先使用 array_map 函数将原数组 $arr 中的每个元素都序列化成字符串,然后使用 array_unique 函数对序列化后的字符串进行去重操作,最后再使用 foreach 循环反序列化成正常的数组元素。

这种方法相比于方法一,效率稍高一些,但是序列化和反序列化的过程可能会影响性能。

方法三:使用 array_filter 函数

function remove_duplicate_by_array_filter($arr){
    $unique_arr = array_unique(array_map('serialize',$arr));//先将数组序列化再去重
    return array_filter($unique_arr, function($var){//回调函数进行反序列化
        return unserialize($var);
    });
}

$students = array(
    array('name' => '张三', 'age' => 18),
    array('name' => '李四', 'age' => 20),
    array('name' => '王五', 'age' => 22),
    array('name' => '赵六', 'age' => 18),
    array('name' => '张三', 'age' => 18)
);
print_r(remove_duplicate_by_array_filter($students));

上面的代码中,我们先使用 array_map 函数将原数组 $arr 中的每个元素都序列化成字符串,然后使用 array_unique 函数对序列化后的字符串进行去重操作,最后再使用 array_filter 函数实现反序列化操作。

这种方法相比于前两种方法,代码量更少,效率也更高。

总结

在 PHP 中,删除二维数组中的重复值并不难,可以使用 array_maparray_uniquearray_filter

Qu'est-ce qu'un tableau bidimensionnel ?

Un tableau bidimensionnel signifie que les éléments d'un tableau sont également un tableau, et il peut être exprimé sous forme de matrice. En PHP, nous pouvons créer un tableau bidimensionnel en utilisant la méthode suivante : 🎜rrreee🎜Dans le code ci-dessus, nous créons un tableau $students, où chaque élément est également un tableau, contenant Name et age sont deux paires clé-valeur. Ce tableau peut être compris comme un tableau d’informations sur les étudiants. 🎜

Méthodes pour supprimer les valeurs en double

🎜Ensuite, nous introduisons plusieurs méthodes pour supprimer les valeurs en double dans des tableaux à deux dimensions : 🎜

Méthode 1 : Utiliser la boucle foreach

rrreee🎜Dans le au-dessus du code, nous définissons d'abord un tableau $result vide, puis utilisons deux boucles foreach pour parcourir le tableau d'origine $arr, pour chaque élément $value, recherchez si le même élément existe dans le tableau <code>$result, sinon, ajoutez-le au tableau $result. 🎜🎜Cette méthode est relativement simple et facile à comprendre, mais l'efficacité est relativement faible, surtout lorsqu'il y a une grande quantité de données, le temps de parcours deviendra très long. 🎜

Méthode 2 : Utiliser les fonctions array_map et array_unique

rrreee🎜Dans le code ci-dessus, nous utilisons d'abord la fonction array_map pour convertir chaque élément du tableau d'origine $arr Chaque élément est sérialisé en une chaîne, puis la fonction <code>array_unique est utilisée pour dédupliquer la chaîne sérialisée, et enfin la boucle foreach est utilisée pour la désérialiser en un élément de tableau normal. 🎜🎜Cette méthode est légèrement plus efficace que la méthode 1, mais le processus de sérialisation et de désérialisation peut affecter les performances. 🎜

Méthode 3 : Utiliser la fonction array_filter

rrreee🎜Dans le code ci-dessus, nous utilisons d'abord la fonction array_map pour filtrer chaque élément du tableau d'origine $arr Tous sont sérialisés en chaînes, puis la fonction array_unique est utilisée pour dédupliquer la chaîne sérialisée, et enfin la fonction array_filter est utilisée pour implémenter l'opération de désérialisation. 🎜🎜Par rapport aux deux premières méthodes, cette méthode contient moins de code et est plus efficace. 🎜

Résumé

🎜En PHP, il n'est pas difficile de supprimer les valeurs en double​​dans un tableau à deux dimensions. Vous pouvez utiliser array_map, array_uniquecode>, <code>array_filter et autres fonctions à implémenter. Choisissez différentes méthodes selon vos besoins pour obtenir des résultats de traitement plus 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