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 破解防盗链图片函数
Dec 09 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
PHP对象Object的概念 介绍
Jun 14 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
php输入流php://input使用浅析
Sep 02 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
php表单提交实例讲解
Nov 12 PHP
php面向对象编程self和static的区别
May 08 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Python的log日志功能及设置方法
2019/07/11 Python
python匿名函数用法实例分析
2019/08/03 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python 瀑布线指标编写实例
2020/06/03 Python
python程序如何进行保存
2020/07/03 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
家长对孩子的评语
2014/04/18 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
现实表现证明材料
2015/06/19 职场文书