PHP IN_ARRAY 函数 使用需要注意的地方
2010-07-23 16:33
761 查看
今天 看PPC http://bbs.phpchina.com/thread-171993-1-7.html
这个问题。
其实关键还是因为 php是弱类型语言,php进行比较的时候 最好还是使用strict方法的。因为这样不但比较两者的值是否一直,还会比较两者的类型是否一直。
另外,我们在 控制结构比较两个数值是否一直的时候,也应该尽量使用 === 来代替 ==(当然,这个也根据具体的业务逻辑选用比较合适的)。
小弟来解释下 为什么
这句话的结果是bool(true)。
因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类型,根据php manual 中“Comparison Operators” 一章的说明可知,number 和string进行
比较的时候,会先将string类型首先转化为number,然后再进行比较操作。 's'转化为number的结果为0,而0 == 0 的结果是true,所以in_array(0, array('s', 'ss'))的结果也是true
如果把in_array 的第三个参数strict设置为 true,比较的时候 就会判断值和类型是否都相当。如果都相当的话,才会返回true,否则返回false.
仅此为记。
这个问题。
其实关键还是因为 php是弱类型语言,php进行比较的时候 最好还是使用strict方法的。因为这样不但比较两者的值是否一直,还会比较两者的类型是否一直。
另外,我们在 控制结构比较两个数值是否一直的时候,也应该尽量使用 === 来代替 ==(当然,这个也根据具体的业务逻辑选用比较合适的)。
小弟来解释下 为什么
var_dump(in_array(0, array('s' ));
这句话的结果是bool(true)。
因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类型,根据php manual 中“Comparison Operators” 一章的说明可知,number 和string进行
比较的时候,会先将string类型首先转化为number,然后再进行比较操作。 's'转化为number的结果为0,而0 == 0 的结果是true,所以in_array(0, array('s', 'ss'))的结果也是true
如果把in_array 的第三个参数strict设置为 true,比较的时候 就会判断值和类型是否都相当。如果都相当的话,才会返回true,否则返回false.
仅此为记。
相关文章推荐
- php in_array 函数使用说明与in_array需要注意的地方说明
- php in_array 函数使用说明与in_array需要注意的地方说明
- PHP IN_ARRAY 函数使用需要注意的地方
- PHP IN_ARRAY 函数 使用需要注意的地方
- PHP IN_ARRAY 函数使用注意事项
- PHP IN_ARRAY 函数使用注意事项
- 使用函数模板需要注意的几个地方
- PHP 中 in_array 需要注意的一点
- C++使用localtime函数需要注意的地方
- PHP 中 in_array 函数的用法与注意项
- PHP常量使用的几个需要注意的地方
- php数组查找函数in_array()、array_search()、array_key_exists()使用实例
- PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
- 在PHP中使用类可能需要注意的地方
- C++使用localtime函数需要注意的地方
- php数组合并array_merge()函数使用注意事项
- php的crc32函数使用时需要注意的问题(不然就是坑)
- php中in_array需要注意的一点
- 使用SQL Server 2014 In-Memory 内存数据库时需要注意的地方
- PHP的in_array() 函数使用详解