webentwicklung-frage-antwort-db.com.de

Was ist besser in zu verwenden PHP $ array [] = $ value oder array_Push ($ array, $ value)?

Was ist besser in PHP zu verwenden, um ein Arraymitglied anzuhängen:

$array[] = $value;

oder

array_Push($array, $value);

Obwohl das Handbuch besagt, dass es besser ist, einen Funktionsaufruf zu vermeiden, habe ich auch gelesen, dass $array[] viel langsamer ist als array_Push(). Hat jemand irgendwelche Klarstellungen oder Benchmarks?

91
alex

Keine Benchmarks, aber ich persönlich denke, dass $array[] sauberer ist, und ehrlich gesagt, Haare in Millisekunden zu teilen, ist ziemlich irrelevant, es sei denn, Sie wollen Hunderttausende von Strings an Ihr Array anhängen.

Edit : Lief folgenden 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;

Die erste Methode, die $array[] verwendet, ist fast 50% schneller als die zweite.

Einige Benchmark-Ergebnisse:

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[]

Dies sollte nicht überraschen, da das Handbuch PHP Folgendes feststellt:

Wenn Sie array_Push () verwenden, um ein Element zum Array hinzuzufügen, sollten Sie $ array [] = verwenden, da auf diese Weise kein Aufwand für den Aufruf einer Funktion entsteht. 

So wie es ausgedrückt wird, wäre ich nicht überrascht, wenn array_Push beim Hinzufügen mehrerer Werte effizienter ist.EDIT: Aus Neugier wurden weitere Tests durchgeführt, und selbst bei einer großen Anzahl von Ergänzungen sind einzelne $array[]-Aufrufe schneller als ein großer array_Push. Interessant.

127

Die Hauptanwendung von array_Push () ist, dass Sie mehrere Werte an das Ende des Arrays schieben können.

Es heißt in der Dokumentation :

Wenn Sie array_Push () verwenden, um eine .__ hinzuzufügen. Element zum Array ist es besser zu Verwenden Sie $ array [] = weil auf diese Weise Es ist kein Aufwand erforderlich, eine .__ aufzurufen. Funktion.

38
Inspire

Aus den php-Dokumenten für array_Push :

Anmerkung: Wenn Sie array_Push () verwenden, um ein Element zum Array hinzuzufügen, verwenden Sie $ array [] =, da auf diese Weise der Aufruf einer Funktion nicht mit einem Overhead verbunden ist.

25
Benedict Cohen

Das Wort auf der Straße ist, dass [] schneller ist, da kein Overhead für den Funktionsaufruf besteht. Außerdem mag niemand die Array-Funktionen von PHP wirklich ...

"Ist es ... Heuhaufen, Nadel ... oder ist es Nadelheuhaufen ... ah, f *** it ... [] ="

16
typeoneerror

Ein Unterschied ist, dass Sie array_Push () mit mehr als zwei Parametern aufrufen können, d. H. Sie können mehr als ein Element gleichzeitig in ein Array verschieben.

$myArray = array();
array_Push($myArray, 1,2,3,4);
echo join(',', $myArray);

druckt 1,2,3,4

8
VolkerK

Da " array_Push " eine Funktion ist und diese mehrmals aufgerufen wurde, wenn sie sich innerhalb der Schleife befindet, wird sie dem Stack einen Speicher zuweisen .. _. Wenn wir jedoch $ array [] = $ value verwenden, werden wir nur dem Array einen Wert zuweisen.

2
Vinod Kirte

Eine einfache $ myarray [] -Deklaration wird schneller ausgeführt, da Sie gerade ein Element auf den Stapel von Elementen schieben, da es für die Funktion keinen Overhead gibt.

2
Tom Hallam

Der zweite ist ein Funktionsaufruf, der im Allgemeinen langsamer sein sollte als die Verwendung von Core-Array-Zugriffsfunktionen. Ich denke jedoch, dass selbst eine Datenbankabfrage in Ihrem Skript 1.000.000 Aufrufe von array_Push() übergewichtet.

1
Stefan Gehrig

Ich möchte nur hinzufügen: int array_Push(...) return Die neue Anzahl von Elementen im Array ( php doc ). was nützlich und kompakter sein kann als $myArray[] = ...; $total = count($myArray);.

Auch array_Push(...) ist sinnvoll, wenn Variable als Stack verwendet wird. 

0
Jean-Luc Barat

Obwohl es mehr um die Leistung ging, werden sich die Leute fragen, ob es sinnvoll ist, array_Push oder $arr[] zu verwenden.

Die Funktion bedeutet möglicherweise weniger Zeilen für mehrere Werte:

// 1 line:
array_Push($arr, "Bob", "Steve");
// versus 2 lines:
$arr[] = "Bob";
$arr[] = "Steve";

Jedoch , array_Push...

  • die Array-Schlüssel können nicht empfangen werden
  • bricht die Namenskonvention needle/haystack
  • ist langsamer, wie diskutiert wurde

Ich bleibe bei $arr[].

0
rybo111