加入收藏 | 设为首页 | 会员中心 | 我要投稿 张家口站长网 (https://www.0313zz.com.cn/)- 办公协同、操作系统、混合云网络、数据湖、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

关于php in_array函数使用的问题

发布时间:2022-07-29 11:08:31 所属栏目:PHP教程 来源:互联网
导读:in_array函数是判断数据中是否存在指定的内容了,对于这个函数用法非常的简单但在使用过程中会我发现有一些问题,下面我们就对于这些问题来看看如何处理吧. 先介绍一下需求背景: 发票方式: 0=捐赠(不要问我为什么,历史原因) 1=对中寄送 2=索取 3=电子发票
  in_array函数是判断数据中是否存在指定的内容了,对于这个函数用法非常的简单但在使用过程中会我发现有一些问题,下面我们就对于这些问题来看看如何处理吧.
 
  先介绍一下需求背景:
 
  发票方式:
 
  0=捐赠(不要问我为什么,历史原因)
 
  1=对中寄送
 
  2=索取
 
  3=电子发票
 
  现在要对用户提交的数据进行检测:
 
  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 

(编辑:张家口站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读