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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
在PHP中执行系统外部命令
Oct 09 PHP
php 引用(&)详解
Nov 20 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
PHP查询快递信息的方法
Mar 07 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
Mar 07 PHP
php英文单词统计器
Jun 23 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
浅谈python装饰器探究与参数的领取
2017/12/01 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
Python读取表格类型文件代码实例
2020/02/17 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
python基于opencv 实现图像时钟
2021/01/04 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
元旦晚会邀请函
2014/01/27 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
安全月宣传标语
2014/10/07 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
关于教师节的广播稿
2015/08/19 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python