In PHP kann sich die Reihenfolge der Array -Elemente ändern, wenn die Funktion der array_unique () zum Deduplizieren eines Arrays verwendet wird. Obwohl Duplikate aus dem Array entfernt werden, kann die ursprüngliche Reihenfolge gestört werden, was das erwartete Verhalten des Programms beeinflusst.
Um die Elementreihenfolge des Arrays nach der Deduplizierung zu erhalten, können Entwickler die folgenden Methoden auswählen:
Diese Methode bewahrt die ursprüngliche Reihenfolge der Elemente durch Kreuzung.
$array
= ['a', 'b', 'c', 'a', 'd'];
$unique_array
=
array_intersect_key
(
$array
,
array_unique
(
$array
));
Indem Sie zuerst die Schlüsselwerte des Arrays umdrehen und dann das Array wieder aufbauen, können Sie die Reihenfolge der Elemente effektiv deduplikieren und bewahren.
$array
= ['a', 'b', 'c', 'a', 'd'];
$seen_keys
=
array_flip
(
$array
);
foreach
(
$seen_keys
as
$key
=>
$val
) {
$unique_array
[
$key
] =
$array
[
$key
];
}
Diese Methode stellt sicher, dass die Reihenfolge zuerst durch Deduplizierung erhalten bleibt und dann das Array durch Array_Values () wieder integriert wird.
$array
= ['a', 'b', 'c', 'a', 'd'];
$unique_array
=
array_values
(
array_unique
(
$array
));
Angenommen, wir haben ein Array mit doppelten Werten:
$array
= ['red', 'green', 'blue', 'red', 'orange'];
Nach Verwendung von Array_unique () zum Deduplizieren ändert sich die Reihenfolge der Elemente:
$unique_array
=
array_unique
(
$array
);
Zu diesem Zeitpunkt wird die Elementreihenfolge: ['grün', 'blau', 'orange', 'rot'] .
Durch die oben genannten Methoden können wir sicherstellen, dass die Reihenfolge der Array -Elemente erhalten bleibt:
$unique_array_intersect
=
array_intersect_key
(
$array
,
array_unique
(
$array
));
Das Ergebnis ist: ['rot', 'grün', 'blau', 'orange'] .
In diesem Artikel werden drei gängige Methoden eingeführt, um das Problem der Sequenzänderung nach der Deduplizierung von PHP -Arrays zu lösen. Unabhängig davon, ob array_intersect_key () oder kombiniert werden kann Array_flip () und array_values () , es kann das Problem des Array -Order -Verlusts effektiv lösen. Hoffentlich können diese Lösungen Entwicklern helfen, Arrays in PHP effizienter zu verarbeiten.