Was ist besser in PHP zum Anhängen eines Array-Mitglieds zu verwenden?
$array[] = $value;
oder
array_push($array, $value);
?
Obwohl das Handbuch besagt, dass Sie besser dran sind, um einen Funktionsaufruf zu vermeiden, habe ich auch gelesen, dass $array[]
es viel langsamer ist als array_push()
. Was sind einige Klarstellungen oder Benchmarks?
php
arrays
performance
Alex
quelle
quelle
Antworten:
Keine Benchmarks, aber ich persönlich bin der Meinung, dass
$array[]
es sauberer anzusehen ist, und das ehrliche Aufteilen von Haaren über Millisekunden ist ziemlich irrelevant, es sei denn, Sie planen, Hunderttausende von Zeichenfolgen an Ihr Array anzuhängen.Edit : Ran diesen Code:
Die erste Methode
$array[]
ist fast 50% schneller als die zweite.Einige Benchmark-Ergebnisse:
Dies sollte nicht überraschen, da das PHP-Handbuch Folgendes feststellt:
Die Art und Weise, wie es formuliert ist, würde mich nicht wundern, wenn
array_push
es effizienter ist, mehrere Werte hinzuzufügen. EDIT : Aus Neugier einige weitere Tests durchgeführt und sogar für eine große Anzahl von Ergänzungen individuell$array[]
Anrufe schneller als ein großerarray_push
. Interessant.quelle
$array[]
tatsächlich viel schneller ist: 300 ms gegenüber 2000 ms für 1 Mio. Zuweisungen auf meinem Computer. Das gleichzeitige Hinzufügen von 20 Elementen in array_push dauerte jedoch ungefähr 20 Sekunden$array[] =
.Die Hauptverwendung von array_push () besteht darin, dass Sie mehrere Werte an das Ende des Arrays verschieben können.
In der Dokumentation heißt es :
quelle
Aus den PHP-Dokumenten für
array_push
:quelle
Auf der Straße heißt es, dass [] schneller ist, weil kein Overhead für den Funktionsaufruf anfällt. Außerdem mag niemand die Array-Funktionen von PHP wirklich ...
"Ist es ... Heuhaufen, Nadel ... oder ist es Nadel Heuhaufen ... ah, verdammt ... [] ="
quelle
Ein Unterschied besteht darin, dass Sie array_push () mit mehr als zwei Parametern aufrufen können, dh Sie können mehr als ein Element gleichzeitig an ein Array senden.
druckt
1,2,3,4
quelle
Eine einfache $ myarray [] -Deklaration ist schneller, da Sie nur ein Element auf den Elementstapel schieben, da eine Funktion keinen Overhead verursachen würde.
quelle
Da " array_push " eine Funktion ist und mehrmals aufgerufen wird, wenn sie sich innerhalb der Schleife befindet, wird dem Stapel ein Speicher zugewiesen. Wenn wir jedoch $ array [] = $ value verwenden, weisen wir dem Array nur einen Wert zu.
quelle
Der zweite ist ein Funktionsaufruf, der im Allgemeinen langsamer sein sollte als die Verwendung der wichtigsten Array-Zugriffsfunktionen. Aber ich denke, dass sogar eine Datenbankabfrage in Ihrem Skript 1.000.000 Aufrufe an übergewichtet
array_push()
.quelle
Obwohl es bei der Frage eher um Leistung ging, werden sich die Leute fragen, ob es eine gute Praxis ist,
array_push
oder zu verwenden$arr[]
.Die Funktion kann für mehrere Werte kleinere Zeilen bedeuten:
Allerdings ,
array_push
...Ich bleibe dabei
$arr[]
.quelle
Ich möchte nur nicht hinzufügen: Geben Sie
int array_push(...)
die neue Anzahl von Elementen im Array zurück ( PHP-Dokument ). das kann nützlich und kompakter sein als$myArray[] = ...; $total = count($myArray);
.Ist auch
array_push(...)
sinnvoll, wenn eine Variable als Stapel verwendet wird.quelle