Cette question pose des questions sur la modification du comportement de la fonction de PHP array_unique()
. Par défaut, array_unique()
préserve l'occurrence d'abord d'un élément en double et supprime les doublons ultérieurs. Cependant, il n'y a pas d'option intégrée pour inverser ce comportement et conserver l'occurrence dernier . Pour y parvenir, vous avez besoin d'une solution personnalisée. Nous pouvons tirer parti de array_reverse()
, array_unique()
, puis array_reverse()
à nouveau pour conserver efficacement la dernière occurrence.
<?php function array_unique_last($array) { return array_reverse(array_unique(array_reverse($array, true), SORT_REGULAR), true); } $array = [1, 2, 3, 2, 4, 1, 5, 3]; $uniqueArray = array_unique_last($array); print_r($uniqueArray); // Output: Array ( [0] => 5 [1] => 3 [2] => 4 [3] => 2 [4] => 1 ) ?>
Ce code inverse d'abord le tableau, puis s'applique array_unique()
qui préserve maintenant le dernière occurrence de chaque élément (parce que c'est maintenant le premier dans le tableau inversé). Enfin, il inverse le tableau à son ordre d'origine, en maintenant les dernières occurrences. Le paramètre true
dans array_reverse()
préserve les clés. Cette méthode est efficace pour les tableaux de taille moyenne. Pour les tableaux extrêmement grands, des algorithmes plus optimisés peuvent être pris en compte, mais cette solution fournit une approche claire et concise.
Non, la fonction de PHP array_unique()
ne peut pas être directement modifiée pour préserver la dernière occurrence d'un élément duplicateur. Sa fonctionnalité principale est conçue pour éliminer les doublons tout en gardant la première occurrence. Pour atteindre le comportement souhaité, vous devez utiliser une solution de contournement comme décrit dans la réponse précédente, en utilisant une combinaison de array_reverse()
et array_unique()
. Tenter de modifier le fonctionnement interne de array_unique()
n'est pas recommandé et est généralement impossible sans modifier le code source PHP lui-même.
Il n'y a pas de fonction PHP intégrée unique qui n'accomplit directement cette tâche. Cependant, comme démontré précédemment, une combinaison de array_reverse()
, array_unique()
et array_reverse()
fournit une solution simple et relativement efficace pour la plupart des cas d'utilisation. L'efficacité découle du fait que array_unique()
est une fonction relativement optimisée elle-même. Alors que d'autres approches, telles que l'itération du tableau et l'utilisation d'un tableau temporaire pour suivre les dernières occurrences, sont possibles, la méthode d'inversion est généralement plus concise et fonctionne souvent de manière comparable, en particulier pour les tableaux qui ne sont pas exceptionnellement grands.
pour obtenir des valeurs de tableau uniques en PHP, en priorisant le dernier élément rencontré, l'approche décrite ci-dessus est la plus simple et la plus efficace. La clé consiste à inverser le tableau, à utiliser array_unique()
pour maintenir la première (dernière dernière) occurrence, puis à l'inverser. Cela garantit que la dernière occurrence de chaque valeur en double est conservée pendant que des événements antérieurs sont rejetés. N'oubliez pas d'utiliser l'indicateur SORT_REGULAR
avec array_unique()
pour vous assurer que les comparaisons sont effectuées correctement pour différents types de données. Cette méthode est généralement préférée à l'itération manuelle en raison de sa concision et de ses performances souvent comparables, ce qui en fait une solution pratique pour de nombreux scénarios.
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!