源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP中in_array函数使用的问题与解决办法

  • 时间:2020-02-17 13:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP中in_array函数使用的问题与解决办法
[b]先介绍一下需求背景:[/b] [b]发票方式:[/b] 0=捐赠(不要问我为什么,历史原因) 1=对中寄送 2=索取 3=电子发票 [b]现在要对用户提交的数据进行检测:[/b]
php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ 
  throw new Exception('请选择正确的发票方式'); 
} 
这个时候出现一个问题,如果压根就不存在[code]$_POST[‘invoice_action'][/code]这个值,为什么没有抛出异常? 经确认,这就是PHP作为弱类型语言的一个坑,没错,这是一个坑. [b]看一下这组代码:[/b]
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
[b]总结[/b] 以上就是关于PHP中in_array函数使用时遇到的问题与解决办法,希望这篇文章对同样遇到这个问题的朋友能有所帮助,如果大家有疑问可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部