PHP WTF #10

Vorsicht! Microtime liefert negative Ergebnisse!

<?php   $start = microtime();   $i = 1000;      while ($i--)   { 	//do stuff   }      $end = microtime();    echo 'Took ' . $end - $start . ' seconds'; 

Microtime

Microtime

Okay, durchatmen. Wo liegt der Fehler? Kenner bemerken vielleicht, dass das Wörtchen Took abhanden gekommen ist. Es geht einfach beim konkatenieren was schief:

<?php echo "Calculating " . 6 + 5 . " is fun!"; 

Konkatenation

Konkatenation

Nach Operator-Wertigkeit müssen wir natürlich klammern:

<?php echo "Calculating " . (6 + 5) . " is fun!"; 

Selbiges Problem tritt auch im Beispiel oben auf. Der Output von microtime() ist Millisekunden (Scriptlaufzeit) Sekunden (time()), also etwa 0.77571900 1350824124. Da bei unserer Rechnung einfach ein String -> Float – Cast vorgenommen wird und zudem noch die Operatoren-Wertigkeit missachtet wurde, kam es zu diesem merkwürdigen Ergebnis.