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 相关文章推荐
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
PHP实现仿Google分页效果的分页函数
Jul 29 PHP
php获取远程文件大小
Oct 20 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
Yii框架应用组件用法实例分析
May 15 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中的超全局变量
2006/10/09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
利用Python抓取行政区划码的方法
2016/11/28 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
Python虚拟环境项目实例
2017/11/20 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python批量修改图片大小的方法
2018/07/24 Python
实时获取Python的print输出流方法
2019/01/07 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
初中生操行评语大全
2014/04/24 职场文书
公司考勤管理制度
2015/08/04 职场文书