Heim  >  Artikel  >  Backend-Entwicklung  >  So löschen Sie doppelte Werte aus einem zweidimensionalen Array in PHP

So löschen Sie doppelte Werte aus einem zweidimensionalen Array in PHP

PHPz
PHPzOriginal
2023-04-19 09:20:40622Durchsuche

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_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

Was ist ein zweidimensionales Array?

Ein zweidimensionales Array bedeutet, dass die Elemente in einem Array auch ein Array sind und als Matrix ausgedrückt werden können. In PHP können wir mit der folgenden Methode ein zweidimensionales Array erstellen: 🎜rrreee🎜Im obigen Code erstellen wir ein $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. 🎜

Methoden zum Löschen doppelter Werte

🎜Als nächstes stellen wir mehrere Methoden zum Löschen doppelter Werte in zweidimensionalen Arrays vor: 🎜

Methode 1: Foreach-Schleife verwenden

rrreee🎜In der Im obigen Code definieren wir zunächst ein leeres $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. 🎜

Methode 2: Verwenden Sie die Funktionen array_map und array_unique

rrreee🎜Im obigen Code verwenden wir zunächst die Funktion 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. 🎜

Methode 3: Array_filter-Funktion verwenden

rrreee🎜Im obigen Code verwenden wir zunächst die Funktion array_map, um jedes Element im ursprünglichen Array $arrzu 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. 🎜

Zusammenfassung

🎜In PHP ist es nicht schwierig, doppelte Werte in einem zweidimensionalen Array zu löschen. Sie können 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn