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 相关文章推荐
BBS(php & mysql)完整版(八)
Oct 09 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
解析php5配置使用pdo
Jul 03 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 PHP
PHP积分兑换接口实例
Feb 09 PHP
PHP生成唯一订单号
Jul 05 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 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 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
JavaScript中实现块作用域的方法
2010/04/01 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
javascript实现简易数码时钟
2020/03/30 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
python调用外部程序的实操步骤
2019/03/04 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
超级实用的8个Python列表技巧
2020/08/24 Python
Python项目打包成二进制的方法
2020/12/30 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
印度民族服装购物网站:BIBA
2019/08/05 全球购物
2014年安全生产目标责任书
2014/07/23 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python