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

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

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

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

理想的光照不到现实的黑暗,明灯是黑夜中的奢侈品。如果你接受不了真实生活千疮百孔的消极,那么,请移步儿童区...
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
╰ゝ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
本题主要考察三目运算符 + 类型的隐形转换,送分题
1年前 评论
╰ゝSakura (作者) 1年前
working (楼主) 1年前
working (楼主) 1年前
working (楼主) 1年前
讨论数量: 26

这应该是考的 隐式转换

1年前 评论

file a转转成int就是0

1年前 评论

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

1年前 评论

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

1年前 评论
╰ゝ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
本题主要考察三目运算符 + 类型的隐形转换,送分题
1年前 评论
╰ゝSakura (作者) 1年前
working (楼主) 1年前
working (楼主) 1年前
working (楼主) 1年前

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

1年前 评论

php8以上输出为2的原因 file

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

php: 8.0

= 2

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

file

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

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

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!