PHP字符串==比较运算符的副作用
PHP 字符串 比较 运算符 副作用
2023-06-13 09:14:13 时间
$a="212345678912000005";
$b="212345678912000001";
var_dump($a==$b);
这段代码的输出是bool(true),说明这样判断会得出结论是两者相等.类似的特性在in_array()函数第3个参数为false或者不设置的情况.原因是首先判断字符串是否是数字,然后转换成long或者double(C语言数据类型)再判断-使用zendi_smart_strcmp.但是,源码中的注释说声明考虑了溢出的情况,
}elseif(dval1==dval2&&!zend_finite(dval1)){
/*Bothvaluesoverflowedandhavethesamesign,
*soanumericcomparisonwouldbeinaccurate*/
gotostring_cmp;
}
dval1和dval2分别是两个字符串转换为double型后的值.但为什么还是这样呢?也许这个判断并不正确.进一步研究再说...
解决方法,使用三个等号"==="代替两个等号"==",in_array()函数设置第三个参数为true:in_array("val",$array,true).
相关文章
- php替换字符串中,PHP 替换字符串中的一些字符方法介绍
- ICP备案查询php网页源码-星泽V社
- 小皮面板-支持Web端管理,一键创建网站、FTP、数据库、SSL;安全管理,计划任务,文件管理,PHP多版本共存及切换;自带LNMP与LAMP
- php字符串比较
- 【php】关闭PHP错误提示方法,防止错误信息泄露
- 【php】Parse error: syntax error, unexpected ‘?’, expecting variable (T_VARIABLE)–PHP版本的问题
- PHP实现Linux脚本之旅(php调用linux脚本)
- 和 php 如何配合使用Redis类库搭配PHP编程:高效开发与灵活操作(redis类库)
- PHP实现MySQL乐观锁的技术研究(mysql乐观锁php)
- PHP开启Redis:实现快速访问(php开启redis)
- 极速搭建:Linux下PHP网站快速创建(linux搭建php网站)
- PHP实现从MSSQL中获取数据的技巧 (php返回mssql值)
- 服务器深入比较:PHP数据库与MSSQL服务器(php数据库和mssql)
- 在PHP中安装MySQL扩展:一步一步操作指引(php安装mysql扩展)
- Linux下编译安装PHP:一步步走向稳定性(linux编译安装php)
- 混合开发助力企业信息化C语言PHP和MySQL联动提升系统性能(c php mysql)
- PHP字符转义相关函数小结(php下的转义字符串)
- PHP截取字符串函数整理(支持gb2312和utf-8)
- 第二章PHP入门基础之php代码写法
- 基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
- PHP中的函数--foreach()的用法详解
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- php的数组与字符串的转换函数整理汇总
- php字符串压缩方法比较示例
- php的hash算法介绍
- PHP中比较两个字符串找出第一个不同字符位置例子
- php获取CSS文件中图片地址并下载到本地的方法
- PHP生成等比缩略图类和自定义函数分享
- PHP实现将科学计数法转换为原始数字字符串的方法