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.

Weitere Posts:

Dieser Beitrag wurde unter php, PHP-WTF, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.