7
votes

Array_Merge vs Array_Value pour réinitialiser l'index de la matrice

J'ai 1 matrice que je veux ré-indexer. J'ai trouvé que array_values ​​ code> et array_merge code> Les fonctions peuvent faire le travail (et je n'ai pas besoin de 2 tableaux Pour le array_merge code> fonctionner au travail).

qui est plus rapide pour un très grand tableau? Je comparais cela, mais je ne sais pas comment et ne sais pas le grand tableau encore. P>

Avant Redex Index: P>

Array
(
    [0] => AB
    [1] => EA
    [2] => FA
    [3] => DA
    [4] => AF
)


1 commentaires

J'ai eu la marque de banc, Array_Value est 3 fois plus rapide pour et une matrice avec des valeurs de réseau de 8043 éléments a pris 0,003291130065918 secondes. Fusion de tableau a pris 0,0096800327301025 secondes. $ shuf est le tableau non indexé ci-dessous est le code de l'exécution du repère (copié-le sur le Web) $ SHA1_START = Microtime (true); $ arraymerge = array_merge ($ shuf); $ shal_elapsed = microtime (vrai) - $ SHA1_START; $ start = microtime (vrai); $ arrayvalue = array_values ​​($ shuf); $ écoulé = microtime (vrai) - $ départ; echo "Les valeurs de tableau
ont pris des secondes de $ écoulées."; echo "
matry fusion a pris des secondes $ Shal_elapsed.";


4 Réponses :


2
votes

Array_Values ​​est censé faire exactement ce que vous voulez faire. Array_Merge est censé faire autre chose et vous avez une solution de contournement pour le faire fonctionner sur votre cas. (Bien que vous ayez peut-être des problèmes si une valeur non numérique est oubliée dans les index).

Je ne sais pas s'il existe des différences de performance significatives, mais à coup sûr le code écrit avec Array_Values ​​est plus facile à lire. Et je ne pense pas qu'une fonction censée faire quelque chose est plus lente que celle voulue pour faire autre chose.

J'espère que cela aide.


0 commentaires

2
votes

Je n'ai pas fait les points de repère non plus - et si vous devez être sûr, vous devriez les faire.

Cela dit, je soupçonnerais que si on est préférable à l'autre, Array_Values ​​() va être la voie à suivre.

Après tout, ce que vous voulez faire est exactement ce que Array_Values ​​() a été conçu pour.


0 commentaires

1
votes

Il est important de noter que array_merge () ne réinitialisera que les touches de tableau s'il n'y a pas de touches de chaîne dans la matrice.


0 commentaires

3
votes

J'ai eu la marque de banc, Array_Value est 3 fois plus rapide (désolé de répondre à ma propre question, la section de commentaire ne conserve pas le format)

pour et une matrice avec des éléments de 8043 éléments

Les valeurs de tableau ont pris 0,003291130065918 secondes.

la fusion de matrice a pris 0,0096800327301025 secondes.

$ shuf est le tableau non indexé

ci-dessous est le code de l'exécution de la référence (copié-le de la Web) xxx


1 commentaires

Merci pour cette clarification! Peut-être que vous pourriez accepter celui-ci comme réponse ici :)