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!