在PHP中字符串和数字比较字符串将会转换为数字零

有人说0跟字符串做比较永远是true。属于 php的bug。为啥等于true是因为在PHP中字符串和数字比较字符串将会转换为数字零。

123.png

测试发现字符串0和其他字符串比较确符合我们的人脑思维。

毕竟PHP属于弱类型语言,还具有如下的规律:

'a string'== true等于true,因为如果与布尔值进行比较,PHP会将任何非空字符串计算为true。

0 == false等于true,因为与布尔值比较时,整数0被计算为false。

'a string'== 0也计算为true,因为与整数相比,任何字符串都会转换为整数。如果PHP无法正确转换字符串,则将其计算为0.因此0等于0,等于为真。

要解决此问题,您可以使用===运算符代替==运算符。此运算符(也称为三重等于运算符)仅在两个值具有相同值时才会求值为true,如果它们是相同类型,则仅计算为true 因此,如果我们将示例更改为使用三等于运算符,则所有项都将计算为false。这是因为字符串不能是布尔值,整数不能是布尔值,字符串不等于整数。

两个等于运算符之间的差异很重要。每个都有它自己的用途,但如果你对你的价值类型有任何疑问,那么使用三等于运算符。


支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论