先看代碼
你覺得下面的代碼會輸出什么結果:
<?php
$a = "10";
$b = "1e1";
if($a == $b ) {
echo "相等";
} else {
echo "不等";
}
輸出結果是:相等
查看官網http://php.net/manual/zh/language.types.string.php#language.types.string.conversion .
字符串轉換為數值
當一個字符串被當作一個數值來取值,其結果和類型如下:
如果該字符串沒有包含 '.','e' 或 'E' 並且其數字值在整型的范圍之內(由 PHP_INT_MAX 所定義),該字符串將被當成 integer 來取值。其它所有情況下都被作為 float 來取值。
該字符串的開始部分決定了它的值。如果該字符串以合法的數值開始,則使用該數值。否則其值為 0(零)。合法數值由可選的正負號,后面跟着一個或多個數字(可能有小數點),再跟着可選的指數部分。指數部分由 'e' 或 'E' 后面跟着一個或多個數字構成。
<?php
$foo = 1 + "10.5"; // $foo is float (11.5)
$foo = 1 + "-1.3e3"; // $foo is float (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is integer (1)
$foo = 1 + "bob3"; // $foo is integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
$foo = "10.0 pigs " + 1; // $foo is float (11)
$foo = "10.0 pigs " + 1.0; // $foo is float (11)
?>
知道這個原理后,打印一下上面的數值類型。
<?php
$a = "10";
$b = "1e1";
$b = floatval($b);
var_dump($a,$b);
if($a == $b ) {
echo "相等";
} else {
echo "不等";
}
運行結果:
string(2) "10"
float(10)
相等