Im PHP-Handbuch sagt ( array_push ) ..
Wenn Sie array_push () verwenden , um dem Array ein Element hinzuzufügen, ist es besser, $ array [] = zu verwenden, da auf diese Weise kein Aufwand für den Aufruf einer Funktion entsteht.
Zum Beispiel :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
vs.
$arr[] = "stackoverflow";
print_r($arr);
Ich verstehe nicht, warum es einen großen Unterschied gibt.
Antworten:
Wenn Sie eine Funktion in PHP aufrufen (z. B.
array_push()
), entsteht ein Overhead für den Aufruf, da PHP die Funktionsreferenz nachschlagen, ihre Position im Speicher finden und den von ihm definierten Code ausführen muss.Die Verwendung
$arr[] = 'some value';
erfordert keinen Funktionsaufruf und implementiert die Addition direkt in die Datenstruktur. Wenn Sie also viele Daten hinzufügen, ist die Verwendung viel schneller und ressourcenschonender$arr[]
.quelle
$arr[] = value
die schneller sind? Ich versuche mir vorzustellen, warum der Compiler den Code anders behandeln würde.Mit array_push können Sie dem Array mehr als ein Element in einer Aufnahme hinzufügen.
z.B
array_push($array_name, $element1, $element2,...)
Wobei $ element1, $ element2, ... Elemente sind, die dem Array hinzugefügt werden sollen.
Wenn Sie jedoch jeweils nur ein Element hinzufügen möchten, sollte eine andere Methode (z. B. die Verwendung von $ array_name []) bevorzugt werden.
quelle
Der Unterschied besteht in der folgenden Zeile zu "weil auf diese Weise kein Overhead beim Aufrufen einer Funktion entsteht".
quelle
Sie sollten immer verwenden,
$array[]
wenn möglich, da, wie in der Box angegeben, kein Overhead für den Funktionsaufruf anfällt. Somit ist es etwas schneller als der Funktionsaufruf.quelle
array_push - Schieben Sie ein oder mehrere Elemente an das Ende des Arrays
Beachten Sie die Wörter " ein oder mehrere Elemente am Ende ", um dies zu tun,
$arr[]
müssten Sie die maximale Größe des Arrays ermittelnquelle
$arr[...index...] = $value;
was hier diskutiert wird$arr[] = $value;
. Sie müssen weder die Größe noch das Array kennen, um am Ende zu pushen. Mehrere Elemente wären einfach mehrere Aufrufe:$arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
Erklären Sie: 1.Der erste deklariert die Variable im Array.
2. Die zweite array_push-Methode wird verwendet, um den String in die Array-Variable zu verschieben.
3. Schließlich wird das Ergebnis gedruckt.
4. Die zweite Methode besteht darin, die Zeichenfolge direkt im Array zu speichern.
5. Die Daten werden mit der Methode print_r in den Array-Werten gedruckt.
Diese beiden sind gleich
quelle
beide sind gleich, aber array_push macht eine Schleife in seinem Parameter, der ein Array ist, und führt $ array [] = $ element aus
quelle
Ich weiß, dass dies eine alte Antwort ist, aber es könnte für andere hilfreich sein zu wissen, dass ein weiterer Unterschied zwischen beiden darin besteht, dass die Verwendung von mehr als 2/3 Werten pro Schleife zu einem Array schneller ist:
anstatt:
edit- Vergessen, die Klammer für die
for
Bedingung zu schließenquelle
for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }
. Ich spekuliere array_push ist immer noch etwas schneller.Niemand hat es gesagt, aber array_push schiebt nur ein Element an das ENDE DES ARRAYS, wo $ array [index] einen Wert an einem bestimmten Index einfügen kann. Großer Unterschied.
quelle
$array[index] =
, was eine andere Operation ist als$array[] = ...
. Die Frage enthält zwei Codeteile und fragt, warum zwischen ihnen ein signifikanter [Leistungs-] Unterschied besteht . Die Frage bedeutet wörtlich$array[] = ...
, was ein spezifisches PHP-Idiom ist, das keinen Index beinhaltet. Array + Index löst ein anderes Problem, liefert anderen Code und ist ein anderer Kompromiss.