PHP知识点:从xulei == 0是否为真谈谈运算符===和

机电学院浏览次数:  发布时间:2019-10-06

  据说这是一道小米的php面试题,看到题目想当然的以为输出的是:2,41939香港挂牌还是在番茄酱基础上添加了白砂糖、盐、在代码中验证了一下输出的是:1。惊出一身冷汗,赶紧翻一翻php官网手册。

  这是真的,因为在比较时字符串将转化为一个整数。任何字符串(不是数字),转化成一个整数时将是0。

  php是一门弱类型语言,强类型和弱类型主要是站在变量类型处理的角度进行分类的。强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。所以,关键在于变量数据类型的转换。什么叫隐式类型转换?

  隐式是指源码中没有明显的类型转换代码,也就是说,一个变量,你可以直接给他赋值字符串,也可以直接给他赋值数值,你还可以直接让字符串类型的变量和数值类型的变量相加,虽然得出的最终结果未必是你想象的那样,但一定不会报错。

  也就是说在上例的比较运算中,发生了变量类型的转换,但字符串与数字作比较的时候,字符串会被转换为数字,而不是数字的字符串转化成整数时会被转化成0。再来补充一些

  $a===$b,是不对的,因为$a是字符型$b是数值型,值虽一样,但类型不一样。