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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
php数组随机排序实现方法
Jun 13 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
php微信公众号开发之秒杀
Oct 20 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
Linux系统下安装PHP7.3版本
Jun 26 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 获取远程网页内容的函数
2009/09/08 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
Destoon实现多表查询示例
2014/08/21 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
JavaScript 创建对象
2009/07/17 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
Bootstrap表单布局
2016/07/19 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
浅谈Python中copy()方法的使用
2015/05/21 Python
Python变量和字符串详解
2017/04/29 Python
有趣的python小程序分享
2017/12/05 Python
Python坐标线性插值应用实现
2019/11/13 Python
Python运行异常管理解决方案
2020/03/09 Python
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
《锄禾》教学反思
2014/04/08 职场文书
慈善晚会策划方案
2014/05/14 职场文书
欠款起诉书范文
2015/05/19 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
信仰观后感
2015/06/03 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Redis 配置文件重要属性的具体使用
2021/05/20 Redis