PHP中 == 和 === 的区别
PHP中 == 和 === 的区别:字符串与数字比较时的奇怪行为
大家好!我是PHP新手,遇到了比较运算符的意外行为。我试图理解 ==(松散相等)和 ===(严格相等)之间的区别。
我有一个简单的代码:
$a = '123abc';
$b = 123;
var_dump($a == $b); // 结果:true
var_dump($a === $b); // 结果:false我原本期望两个比较都返回 false,因为类型不同(字符串和数字)。但 == 返回了 true。为什么会这样?我读到过 == 会进行类型转换,但我不明白字符串 '123abc' 怎么能等于数字 123。
我已经尝试过:
- 用不同的字符串测试(例如 'abc123' — 那里 == 返回了 false)
- 阅读PHP关于比较运算符的文档
- 用其他类型进行实验(布尔值、null)
你能用一个易懂的例子解释一下,什么时候该用 ==,什么时候该用 ===?以及为什么在我的情况下,字符串 '123abc' 会被转换为数字 123?