用PHP中的 == 运算符进行字符串比较


Posted in PHP onNovember 26, 2006

最近在Greg Beaver's的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。

在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:

<?php
var_dump
('01' == 1);
?>

以上代码输出结果为:
bool(true)

所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的《PHP 类型比较表》对此也有详细说明。

除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:

<?php
var_dump
(in_array('01', array('1')));
?>

以上代码输出结果为:
bool(true)

相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示:

<?php
var_dump
(in_array('01', array('1'), true));
?>

输出结果为:
bool(false)

由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。

PHP 相关文章推荐
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
thinkphp 多表 事务详解
Jun 17 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
php调用新浪短链接API的方法
Nov 08 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 PHP
PHP图片上传类带图片显示
Nov 25 #PHP
整合了前面的PHP数据库连接类~~做成一个分页类!
Nov 25 #PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 #PHP
xajax写的留言本
Nov 25 #PHP
SSI指令
Nov 25 #PHP
配置支持SSI
Nov 25 #PHP
PHP生成静态页
Nov 25 #PHP
You might like
深入php数据采集的详解
2013/06/02 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
浅析vue深复制
2018/01/29 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
node获取客户端ip功能简单示例
2019/08/24 Javascript
python装饰器decorator介绍
2014/11/21 Python
python访问系统环境变量的方法
2015/04/29 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
高中军训感想300字
2014/03/04 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
小学教师工作总结2015
2015/04/07 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
业余无线电通联Q语
2022/02/18 无线电
golang生成并解析JSON
2022/04/14 Golang