Heim > Artikel > Backend-Entwicklung > So löschen Sie doppelte Werte aus einem zweidimensionalen Array in PHP
In PHP müssen wir uns oft mit Arrays befassen, und eine der häufigsten Fragen ist, wie man doppelte Werte in einem zweidimensionalen Array entfernt. Dieses Problem ist nicht schwer zu lösen. Wir können einige von PHP bereitgestellte Array-Funktionen wie array_map
, array_unique
, array_filter
usw. verwenden. Schauen wir uns als Nächstes an, wie man doppelte Werte aus einem zweidimensionalen Array löscht. 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
-Array, wobei jedes Element auch ein Array ist, das enthält Name
und Alter
sind zwei Schlüssel-Wert-Paare. Dieses Array kann als Tabelle mit Schülerinformationen verstanden werden. 🎜$result
-Array und verwenden dann zwei foreach-Schleifen, um das ursprüngliche Array $arr
für jedes Element $value, finden Sie heraus, ob das gleiche Element im Array <code>$result
vorhanden ist. Wenn nicht, fügen Sie es dem Array $result
hinzu. 🎜🎜Diese Methode ist relativ einfach und leicht zu verstehen, aber die Effizienz ist relativ gering, insbesondere wenn viele Daten vorhanden sind, wird die Durchlaufzeit sehr lang. 🎜array_map
, um jedes Element im ursprünglichen Array $arr Jedes Element wird in einen String serialisiert, dann wird die Funktion <code>array_unique
verwendet, um den serialisierten String zu deduplizieren, und schließlich wird die foreach-Schleife verwendet, um ihn in ein normales Array-Element zu deserialisieren. 🎜🎜Diese Methode ist etwas effizienter als Methode 1, aber der Serialisierungs- und Deserialisierungsprozess kann sich auf die Leistung auswirken. 🎜array_map
, um jedes Element im ursprünglichen Array $arr
zu filtern > Alle werden in Strings serialisiert, dann wird die Funktion array_unique
verwendet, um den serialisierten String zu deduplizieren, und schließlich wird die Funktion array_filter
verwendet, um den Deserialisierungsvorgang zu implementieren. 🎜🎜Im Vergleich zu den ersten beiden Methoden hat diese Methode weniger Code und ist effizienter. 🎜array_map
, array_unique verwenden. code>, <code>array_filter
und andere zu implementierende Funktionen. Wählen Sie je nach Bedarf unterschiedliche Methoden, um effizientere Verarbeitungsergebnisse zu erzielen. 🎜Das obige ist der detaillierte Inhalt vonSo löschen Sie doppelte Werte aus einem zweidimensionalen Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!