In PHP können wir drei Möglichkeiten verwenden, um String in eine Ganzzahl umzuwandeln.
1. Methode der erzwungenen Typkonvertierung Die Methode der erzwungenen Typkonvertierung ist die Methode, „den in Klammern eingeschlossenen Zieltyp vor der zu konvertierenden Variablen hinzuzufügen“.
<?php $foo = "1"; // $foo 是字符串类型 $bar = (int)$foo; // $bar 是整型 ?>
Konvertierung erzwingen Typname ist int oder ganzzahlig. 2.
Eingebaute Funktion Methode Eingebaute Funktionsmethode besteht darin, die in PHP integrierte Funktion intval zum Konvertieren von Variablen zu verwenden.
<?php $foo = "1"; // $foo 是字符串类型 $bar = intval($foo); // $bar 是整型 ?>
int intval(mixed $var [, int $base]);
Obwohl im PHP-Handbuch eindeutig angegeben ist, dass intval() nicht verwendet werden kann zur Array- und Objektkonvertierung. Nach meinen Tests wird es jedoch keine Probleme beim Konvertieren des Arrays geben. Der konvertierte Wert ist 1 und nicht wie erwartet 0. Ich fürchte, das liegt daran, dass Variablen vom Array-Typ in PHP auch davon ausgehen, dass sie Werte ungleich Null haben.
Objekt der Klasse xxxx konnte in xxxxx.php in Zeile xx nicht in int konvertiert werden
Der Konvertierungswert ist ebenfalls 1.
3.
Formatierungszeichenfolge Methode Die Formatierungszeichenfolgenmethode besteht darin, Sprintfs %d zu verwenden, um die angegebene Variable zu formatieren, um den Zweck der Typkonvertierung zu erreichen.
<?php $foo = "1"; // $foo 是字符串类型 $bar = sprintf("%d", $foo); // $bar 是字符串类型 ?>
Legen Sie das folgende Array fest :
<?php $a[] = "1"; $a[] = "a1"; $a[] = "1a"; $a[] = "1a2"; $a[] = "0"; $a[] = array('4',2); $a[] = "2.3"; $a[] = "-1"; $a[] = new Directory(); ?>
<?php $a[] = "1"; $a[] = "a1"; $a[] = "1a"; $a[] = "1a2"; $a[] = "0"; $a[] = array('4',2); $a[] = "2.3"; $a[] = "-1"; $a[] = new Directory(); // int print "(int)<br />"; foreach($a as $v) { var_dump((int)$v); print "<br />"; } // intval print "intval();<br />"; foreach($a as $v) { var_dump(intval($v)); print "<br />"; } // sprintf print "sprintf();<br />"; foreach($a as $v) { var_dump(sprintf("%d", $v)); print "<br />"; } ?>
(int) int(1) int(0) int(1) int(1) int(0) int(1) int(2) int(-1) int(1) intval(); int(1) int(0) int(1) int(1) int(0) int(1) int(2) int(-1) int(1) sprintf(); string(1) "1" string(1) "0" string(1) "1" string(1) "1" string(1) "0" string(1) "1" string(1) "2" string(2) "-1" string(1) "1"
<?php $foo = "1';Select * ..."; ?> 获取时间点的函数如下(用于获取测试起始点和结束点,以计算消耗时间): <?php ** * Simple function to replicate PHP 5 behaviour */ function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } ?>
<?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $foo = "1';Select * ..."; // (int) $fStart = microtime_float(); for($i=0;$i<1000000;$i++) { $bar = (int)$foo; } $fEnd = microtime_float(); print "(int):" . ($fEnd - $fStart) . "s<br />"; // intval() $fStart = microtime_float(); for($i=0;$i<1000000;$i++) { $bar = intval($foo); } $fEnd = microtime_float(); print "intval():" . ($fEnd - $fStart) . "s<br />"; // sprintf() $fStart = microtime_float(); for($i=0;$i<1000000;$i++) { $bar = sprintf("%d", $foo); } $fEnd = microtime_float(); print "sprintf():" . ($fEnd - $fStart) . "s<br />"; ?>
(int):0.67205619812012s intval():1.1603000164032s sprintf():2.1068270206451s (int):0.66051411628723s intval():1.1493890285492s sprintf():2.1008238792419s (int):0.66878795623779s intval():1.1613430976868s sprintf():2.0976209640503s
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie PHP Strings in Ganzzahlen umwandelt, und Beispiele für Leistungstests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!