Heim >Backend-Entwicklung >PHP-Problem >So entfernen Sie Duplikate aus einem zweidimensionalen PHP-Array
In PHP bezieht sich ein zweidimensionales Array auf ein Array, das mehrere Arrays enthält. Das heißt, die Elemente im Array sind Arrays und haben die folgende Form:
$students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) );
In einem zweidimensionalen Array können wir auf doppelte Elemente stoßen . In diesem Fall müssen wir die Duplikate entfernen. Wie kann man also Gewicht verlieren?
Methode 1: Verwenden Sie die Funktion array_unique
Die Funktion array_unique kann doppelte Werte im Array entfernen, kann jedoch nur für eindimensionale Arrays verwendet werden und muss daher auf dem zweidimensionalen Array verarbeitet werden . Die konkrete Idee ist wie folgt:
Wir können jedes Unterarray im zweidimensionalen Array durchlaufen, es in eine Zeichenfolge konvertieren und in einem neuen Array speichern. Anschließend wird das neue Array dedupliziert und das Endergebnis ist ein dedupliziertes zweidimensionales Array.
Der Code ist wie folgt implementiert:
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $temp = array_unique($temp); $result = array(); foreach ($temp as $key => $value) { $result[$key] = explode(',', $value); } return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
Das Ausgabeergebnis lautet wie folgt:
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
Methode 2: Verwenden Sie die Funktion array_reduce
Die Funktion array_reduce kann zweidimensionale Arrays in eindimensionale Arrays zusammenführen und Deduplizierungsvorgänge durchführen ihnen. Die konkrete Idee ist wie folgt:
Wir können zunächst jedes Unterarray im zweidimensionalen Array in eine Zeichenfolge konvertieren und in einem neuen Array speichern. Verwenden Sie dann die Funktion array_reduce, um die neuen Arrays zu einem String zu kombinieren, und verwenden Sie die Funktion array_unique, um den String zu deduplizieren. Verwenden Sie abschließend die Explosionsfunktion, um die deduplizierte Zeichenfolge in ein zweidimensionales Array umzuwandeln.
Der Code ist wie folgt implementiert:
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $result = array_reduce($temp, function($carry, $item){ if (!in_array($item, $carry)) { $carry[] = $item; } return $carry; }, array()); $result = array_map(function($item) { return explode(',', $item); }, $result); return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
Das Ausgabeergebnis lautet wie folgt:
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
Zusammenfassung
Die oben genannten sind die beiden Methoden zur Deduplizierung zweidimensionaler Arrays in PHP. Beide Methoden nutzen die integrierten Funktionen von PHP und die spezifischen Implementierungsideen sind relativ einfach. Es ist zu beachten, dass Sie bei Verwendung der Funktion array_reduce die Funktion array_map verwenden müssen, um die deduplizierte Zeichenfolge in ein zweidimensionales Array umzuwandeln.
Das obige ist der detaillierte Inhalt vonSo entfernen Sie Duplikate aus einem zweidimensionalen PHP-Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!