Avatar ·

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?