• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP中in_array隐式转换实现步骤详解

php 搞代码 3年前 (2022-01-22) 18次浏览 已收录 0个评论

这次给大家带来PHP中in_array隐式转换实现步骤详解,PHP中in_array隐式转换实现的注意事项有哪些,下面就是实战案例,一起来看一下。

问题

今天在写一个接口的时候,需要传入大量的基本信息参数,参数分别是int和string两种类型,为了校验方便,我打算把所有的参数都放在数组中,然后用in_array(0, $param)判断 int 参数是否为0,再单独判断string参数是否为空,示例代码如下:

      if(in_array(0, $param) || $param['img'] == '') {        $this->errorCode = 10030;        $this->errorMessage = '参数不正确';        return false;       }

可是自测时发现,传入正确的参数,都会返回参数不正确的提示!!!

原因

出现这种情况,正是因为in_array惹的祸,in_array(search,array)等价于将数组中的每个value与search比较,由于我$param数组中除了有int参数,还有一个string参数,相当于用string和int去比较,PHP的隐式转换规则:

非数字字符串和整数比较,字符串自动转换为int(0)

下面的例子就验证了我们的说法:

<?php  $a = (int)'abc';  var_dump($a); //int(0)  $c = array(0,1,2,3);  if(in_array('abc', $c)) {    echo 'exist';  } else {    echo 'not exist&#<p>5本文来源gao!daima.com搞$代!码#网#</p><pre>搞代gaodaima码

39;; } //exist

解决办法

in_array增加第三个参数true,用来检查搜索的数据与数组的值的类型是否相同,这样函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true

针对我上面出现的业务,完全可以严谨一些,将int型数据存一个数组,string存一个数组,两个不同类型的数组分别进行数据校验,这样也不会出现上面的问题

相信看了本文案例你已经掌握了方法,更多精彩请关注搞代码其它相关文章!

推荐阅读:

php有哪些方法可以输出json对象的值

阿里云Win2016安装Apache与PHP环境教程详解

PHP生成加减算法步骤详解

以上就是PHP中in_array隐式转换实现步骤详解的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP中in_array隐式转换实现步骤详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址