我使用“==”对字符串进行了一些测试。我知道比较字符串 '==' 不是办法,但我想解决一个奇怪的行为。
我正在关注此页面中的 PHP 文档:http://www.php.net/manual/en/language.operators.comparison.php .这是我做的测试
<?php
var_dump( "100" == "1e2" ); //outputs boolean true
var_dump( (int) "100" ); //int 100
var_dump( (int) "1e2" ); //int 1
?>
文档说当我们将字符串与数字进行比较时,PHP 首先将字符串转换为数字,但是当我将'100' 和'1e2' 转换为数字时它们并不相等。比较应输出 bool 值 false。
为什么会出现这种奇怪的行为?谢谢!
最佳答案
并非所有数字都是整数。 1e2
是一个 float (恰好可以表示为整数,但不能直接转换为整数)。尝试转换为 float
而不是 int
:
<?php
var_dump( "100" == "1e2" ); // bool(true)
var_dump( (float) "100" ); // float(100)
var_dump( (float) "1e2" ); // float(100)
?>
关于PHP 字符串比较使用 '==',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489549/