问答 / 0 / 26 / 创建于 2年前
刚看了个面试题,有点不理解求大神解释一下
$a=0=="a"?1:2
已知答案是1 但是究竟是怎么个过程,求解释
$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
这应该是考的 隐式转换
a转转成int就是0
弱类型,0是int,对比时,会把字符串转换成int类型,字符串0a将变为0
弱类型
0a
对比时会把字符串转整数,第一个字符不是数字的话就是0。
我引用我自己的回复
看php版本的,忘记哪个版本把这个问题解决了
谢谢各位
php8以上输出为2的原因
3v4l.org/6mmq7
php: 8.0
= 2
这里再补充个之前遇到过一个 in_array(0,["a"]) 的坑,其实 in_array 方法还有第三个参数 strict,其默认是 false 即松散比较。
in_array(0,["a"])
in_array
我要举报该,理由是:
推荐文章: