Quoi de mieux d'utiliser dans PHP pour ajouter un membre du tableau:
$array[] = $value;
ou
array_Push($array, $value);
Bien que le manuel indique qu'il vaut mieux éviter un appel de fonction, j'ai également lu que $array[]
est beaucoup plus lent que array_Push()
. Est-ce que quelqu'un a des clarifications ou des points de repère?
Pas de points de repère, mais je pense personnellement que $array[]
est plus propre à regarder et honnêtement couper les cheveux en millisecondes est assez inutile, sauf si vous envisagez d'ajouter des centaines de milliers de chaînes à votre tableau.
Edit : A couru ce code:
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
$array[] = $i;
}
print microtime(true) - $t;
print '<br>';
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
array_Push($array, $i);
}
print microtime(true) - $t;
La première méthode utilisant $array[]
est presque 50% plus rapide que la seconde.
Run 1
0.0054171085357666 // array_Push
0.0028800964355469 // array[]
Run 2
0.0054559707641602 // array_Push
0.002892017364502 // array[]
Run 3
0.0055501461029053 // array_Push
0.0028610229492188 // array[]
Cela ne devrait pas être surprenant, comme le dit le manuel PHP:
Si vous utilisez array_Push () pour ajouter un élément au tableau, il vaut mieux utiliser $ array [] =, car il n’y aurait pas de surcroît d’appel à une fonction.
La façon dont il est formulé ne me surprendrait pas si array_Push
est plus efficace lors de l'ajout de plusieurs valeurs.EDIT: Par curiosité, nous avons fait d’autres tests et, même pour un grand nombre d’ajouts, les appels individuels $array[]
sont plus rapides qu’un seul gros array_Push
. Intéressant.
La principale utilisation de array_Push () est que vous pouvez envoyer plusieurs valeurs à la fin du tableau.
Il est dit dans la documentation :
Si vous utilisez array_Push () pour en ajouter un élément du tableau, il est préférable de utilisez $ array [] = car de cette manière il n'y a pas de surcharge d'appeler un une fonction.
Depuis la documentation php pour array_Push
:
Remarque: Si vous utilisez array_Push () pour ajouter un élément au tableau, il vaut mieux utiliser $ array [] =, car il n’y aurait pas de surcharge à appeler une fonction.
La rumeur dit que [] est plus rapide parce qu’il n’ya pas de surcharge pour l’appel de fonction. De plus, personne n'aime vraiment les fonctions de tableau de PHP ...
"Est-ce que ... c'est une botte de foin, une aiguille ... ou c'est une aiguille de botte de foin ... ah, f *** it ...
Une différence est que vous pouvez appeler array_Push () avec plus de deux paramètres, c'est-à-dire que vous pouvez envoyer plusieurs éléments à la fois dans un tableau.
$myArray = array();
array_Push($myArray, 1,2,3,4);
echo join(',', $myArray);
imprime 1,2,3,4
Puisque " array_Push " est une fonction appelée plusieurs fois quand elle se trouve dans la boucle, elle allouera une mémoire à la pile . attribuer une valeur à un tableau.
Une simple déclaration $ myarray [] sera plus rapide car vous déposez simplement un élément sur la pile d'éléments en raison du manque de temps système qu'une fonction entraînerait.
Deuxièmement, il s’agit d’un appel de fonction, de sorte qu’il devrait généralement être plus lent que l’utilisation des fonctionnalités d’accès à la baie principale. Mais je pense que même une requête de base de données dans votre script dépassera 1.000.000 appels à array_Push()
.
Je veux juste pas ajouter: int array_Push(...)
return, le nouveau nombre d'éléments dans le tableau ( php doc ) ce qui peut être utile et plus compact que $myArray[] = ...; $total = count($myArray);
.
De plus, array_Push(...)
est significatif lorsque la variable est utilisée en tant que pile.
Bien que la question porte davantage sur les performances, les gens vont se poser la question suivante: est-il judicieux d’utiliser array_Push
ou $arr[]
.
La fonction peut signifier des lignes inférieures pour plusieurs valeurs:
// 1 line:
array_Push($arr, "Bob", "Steve");
// versus 2 lines:
$arr[] = "Bob";
$arr[] = "Steve";
Cependant , array_Push
...
Je vais rester avec $arr[]
.