Maison > Article > développement back-end > Comment supprimer les valeurs en double d'un tableau à deux dimensions en PHP
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_map
、array_unique
、array_filter
等等。下面,就让我们来了解一下如何实现删除二维数组重复值的方法。
二维数组是指一个数组中的元素也是一个数组,它可以表示为一个矩阵。在 PHP 中,我们可以使用以下方式创建一个二维数组:
$students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18) );
上面的代码中,我们创建了一个 $students
数组,其中每个元素也是一个数组,包含 name
和 age
两个键值对。这个数组可以理解为一个学生信息的表格。
接下来,我们介绍若干种删除二维数组重复值的方法:
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
数组中。
这种方法比较简单易懂,但是效率比较低,尤其是当数据较多时,遍历的时间会变得很长。
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 循环反序列化成正常的数组元素。
这种方法相比于方法一,效率稍高一些,但是序列化和反序列化的过程可能会影响性能。
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_map
、array_unique
、array_filter
$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. 🎜$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. 🎜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. 🎜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. 🎜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!