字符串 == 0 为什么为true,其他语言都是false

来个大佬说下

路漫漫其修远兮,吾将上下而求索
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

因为 php 不是强类型、字符串和数字 用 == 比较会被当成 0,用 === 强等于吧

3年前 评论
pi_phq (楼主) 3年前
aab

PHP8 已经修复了这个问题,字符串和数字比较都会转成字符串再比较。 3v4l.org/XfAXs

3年前 评论
pi_phq (楼主) 3年前
第五焱陽

如果你字符串开头是数字 那就不是 true 了

3年前 评论
pi_phq (楼主) 3年前

哈哈哈,才发现

3年前

以上的案例中,string 跟 int 比较,会优先将 string 转换成 int,而 string 转换成 int 是从左开始寻找能被转换成 int 的数值,找不到则会当做 0,如字符串 1a 会转换成 1,字符串 a 会转换成 0。

例如:

'1a' == 0 // 等于 1 == 0,得出 false
'0a' == 0 // 等于 0 == 0,得出 true
'a' == 0 // 等于 0 == 0, 得出 true
3年前

我现在几乎都用 "===" 了

3年前

file 惊不惊喜 请使用 8+

3年前

我坚持用 === 用了两年了,

3年前
Junwind

弱类型的坑呗

3年前