PHP中in_array函数使用的问题与解决办法


Posted in PHP onSeptember 11, 2016

先介绍一下需求背景:

发票方式:

0=捐赠(不要问我为什么,历史原因)

1=对中寄送

2=索取

3=电子发票

现在要对用户提交的数据进行检测:

php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ 
  throw new Exception('请选择正确的发票方式'); 
}

这个时候出现一个问题,如果压根就不存在$_POST[‘invoice_action']这个值,为什么没有抛出异常?

经确认,这就是PHP作为弱类型语言的一个坑,没错,这是一个坑.

看一下这组代码:

echo in_array('', array(0)) ? 1 : 0;   // 结果:1
echo in_array(null, array(0)) ? 1 : 0;  // 结果:1
echo in_array(false, array(0)) ? 1 : 0; // 结果:1

这么大一个坑,我们要怎么绕过或者填起呢?

方法一:in_array支持第三个参数,强制对数据类型检测

echo in_array('', array(0), true) ? 1 : 0;   // 结果:0
echo in_array(null, array(0), true) ? 1 : 0;  // 结果:0
echo in_array(false, array(0), true) ? 1 : 0; // 结果:0

方法二:依然是数据类型方向,把数组中的0改为字符串

echo in_array('', array('0'), true) ? 1 : 0;   // 结果:0
echo in_array(null, array('0'), true) ? 1 : 0;  // 结果:0
echo in_array(false, array('0'), true) ? 1 : 0; // 结果:0

总结

以上就是关于PHP中in_array函数使用时遇到的问题与解决办法,希望这篇文章对同样遇到这个问题的朋友能有所帮助,如果大家有疑问可以留言交流。

PHP 相关文章推荐
php session 检测和注销
Mar 16 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
两种php实现图片上传的方法
Jan 22 PHP
CI框架的安全性分析
May 18 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
使用php自动备份数据库表的实现方法
Jul 28 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
详解PHP中array_rand函数的使用方法
Sep 11 #PHP
PHP入门教程之上传文件实例详解
Sep 11 #PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 #PHP
PHP入门教程之表单与验证实例详解
Sep 11 #PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 #PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 #PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 #PHP
You might like
php xml 入门学习资料
2011/01/01 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
微信小程序实现换肤功能
2018/03/14 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
Python如何输出整数
2020/06/07 Python
Python数据可视化图实现过程详解
2020/06/12 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
Noon埃及:埃及在线购物
2019/11/26 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
班主任工作经验材料
2014/02/02 职场文书
五年级科学教学反思
2014/02/05 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
技校毕业生自荐书
2014/05/23 职场文书
小学校本培训方案
2014/06/06 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书