在面试题看到的问题,求解答

刚看了个面试题,有点不理解求大神解释一下

$a=0=="a"?1:2

已知答案是 1 但是究竟是怎么个过程,求解释

一个偏向心理学即将转向产品的码农
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
╰ゝSakura
最佳答案
$a=0=="a"?1:2;
等同于 $a = (0=="a") ? 1 : 2; 
实际就是 如果 (0=="a") 成立,则将1赋予给$a变量,如果不成立就将2赋予给$a变量(三目运算符)
0 == "a" 的话,实际就是 0 == int("a")"a"字符串转换成int类型的话,则是0,所以 0 == "a"成立,所以结果为1
本题主要考察三目运算符 + 类型的隐形转换,送分题
2年前 评论
╰ゝSakura (作者) 2年前
working (楼主) 2年前
working (楼主) 2年前
working (楼主) 2年前
讨论数量: 26

这应该是考的 隐式转换

2年前 评论

file a 转转成 int 就是 0

2年前 评论

弱类型,0 是 int,对比时,会把字符串转换成 int 类型,字符串 0a 将变为 0

2年前 评论

对比时会把字符串转整数,第一个字符不是数字的话就是 0。

2年前 评论
╰ゝSakura
$a=0=="a"?1:2;
等同于 $a = (0=="a") ? 1 : 2; 
实际就是 如果 (0=="a") 成立,则将1赋予给$a变量,如果不成立就将2赋予给$a变量(三目运算符)
0 == "a" 的话,实际就是 0 == int("a")"a"字符串转换成int类型的话,则是0,所以 0 == "a"成立,所以结果为1
本题主要考察三目运算符 + 类型的隐形转换,送分题
2年前 评论
╰ゝSakura (作者) 2年前
working (楼主) 2年前
working (楼主) 2年前
working (楼主) 2年前

看 php 版本的,忘记哪个版本把这个问题解决了

2年前 评论

php8 以上输出为 2 的原因 file

2年前 评论
2年前 评论
working (楼主) 2年前
随波逐流

php: 8.0

= 2

2年前 评论
working (楼主) 2年前

file

2年前 评论
working (楼主) 2年前
Jinx (作者) 2年前
working (楼主) 2年前

这里再补充个之前遇到过一个 in_array(0,["a"]) 的坑,其实 in_array 方法还有第三个参数 strict,其默认是 false 即松散比较。

2年前 评论
working (楼主) 2年前