web-dev-qa-db-fra.com

Quoi de mieux à utiliser dans PHP $ array [] = $ value ou array_Push ($ array, $ value)?

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?

91
alex

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.

Quelques résultats de référence:

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.

127
Paolo Bergantino

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.

38
Inspire

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.

25
Benedict Cohen

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 ...

16
typeoneerror

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

8
VolkerK

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.

2
Vinod Kirte

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.

2
Tom Hallam

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().

1
Stefan Gehrig

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. 

0
Jean-Luc Barat

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...

  • ne peut pas recevoir les clés du tableau
  • enfreint la convention de nommage needle/haystack
  • est plus lent, comme cela a été discuté

Je vais rester avec $arr[].

0
rybo111