Anführungszeichen Einfach oder Doppelt? Nicht nur eine Frage der persönlichen Vorliebe...
Viele PHP Entwickler schwören auf das doppelte Anführungszeichen ... Andere sind heiße Verfechter des einfachen für String-Bearbeitung. Wieder Anderen ist es total egal.
Aber so einfach kann man es sich nicht machen, denn es ist auch eine Frage der Performance.
Was also ist besser?$hallo = "Hallo";
$hallo_welt = "$hallo Welt.";oder$hallo = 'Hallo';
$hallo_welt = $hallo.' Welt.';
Testen wir es einfach mit einer schönen extra langen FOR Schleife.
Das Testscript
<?php
/** Simple function to replicate PHP5 behaviour **/
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$hallo = "Hallo";
$time_start = microtime_float();
// doing a lot of string operations
for($x = 0; $x < 1000000; $x++)
{
$hallo_welt = "$hallo Welt.";
}
$time_end = microtime_float();
$time = $time_end - $time_start;
var_dump($time);
$time_start = microtime_float();
// doing a lot of string operations
for($x = 0; $x < 1000000; $x++)
{
$hallo_welt = $hallo.' Welt.';
}
$time_end = microtime_float();
$time = $time_end - $time_start;
var_dump($time);
?>
Technische Hintergründe
Warum ist das Ergebnis derart unterschiedlich?
Nun, man kann in doppelten Anführungszeichen, den sogenannten "doublequotes", direkt auf PHP Variablen zugreifen ohne den String zu schließen oder einzelne Elemente aneinanderzureihen (zu konkatenieren). Dies ist sicherlich eine sehr bequeme Möglichkeit einen String zusammenzubauen (z.B.: echo "Variable: $foo"; Ausgabe: "Variable: bar").
ABER,
der PHP Interpreter muss diese eingebauten Variablen finden und durch deren Wert ersetzen. Und wo etwas getan werden muss, geht auch Zeit dafür drauf.
Auf der anderen Seite stehen die einfachen Anführungszeichen, die sogenannten "singlequotes". Zwischen Ihnen ist es nicht möglich auf PHP Variablenwerte zuzugreifen. Würde man es versuchen, bekäme man nur die Variable als Text ausgegeben (z.B.: echo 'Variable: $foo'; Ausgabe: 'Variable: $foo'). Nicht so doll.
ABER,
dieses Verhalten ist ebenso ein Ergebnis des PHP Interpreters, welcher an dieser Stelle sehr faul ist und den Inhalt zwischen den einzelnen Anführungszeichen ungesehen hinnimmt und weitergibt. Nichts getan - schnell fertig!
Ergebnisse
doppelte Anführungszeichen:
PHP4 ... 3.487966 sec
PHP5 ... 1.375856 sec
einfache Anführungszeichen:
PHP4 ... 2.094632 sec
PHP5 ... 0.898931 sec
Auswertung
Was lesen wir aus diesen Zahlen?
Nun zum einen, dass PHP4 hier wegen der extra Benchmarkfunktion länger braucht als PHP5.
Und zum anderem, was viel wichtiger ist, sehen wir hier einen eindeutigen Testsieger. Das einfache Anführungszeichen ist im Vergleich zum doppelten um ca. 34-39% schneller!
Das ist doch mal was. Also ab sofort hat man dann keine Ausrede und erst Recht keine Wahl mehr würde ich sagen.
