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实现验证码功能
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
php中如何执行linux命令详解
Nov 06 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 PHP
php实现商城购物车的思路和源码分析
Jul 23 PHP
phpstudy隐藏index.php的方法
Sep 21 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
python编写简单爬虫资料汇总
2016/03/22 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
Python 移动光标位置的方法
2019/01/20 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python三引号如何输入
2020/07/06 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
水果花束:Fruit Bouquets
2017/12/20 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
小学教研工作制度
2014/01/15 职场文书
村党支部公开承诺书
2014/05/29 职场文书
护理见习报告范文
2014/11/03 职场文书
安全保证书
2015/01/16 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python