摘要:官方函数定义需要查找的元素被查找的数组如果该参数设置为,则会使用严格比较模式去寻找元素。也就是说,在查找时,不仅比对要查找的元素与数组元素的值,还会比对其类型。在忽略第三个参数的情况下,文章开头的问题输出会是。
本文首发地址为hilsion的博客
以下代码,你觉得会输出true还是false?
1今天在调试代码的时候发现一个关于in_array的错误使用方式导致的一个bug。在PHP中,数组是一个十分强大的数据结构,官方提供了特别多的数组操作函数,in_array()是比较常用的一个,我们经常会用它来判断数组中是否包含某个元素。但我们可能会在使用时忽略掉该函数的第三个参数而导致一类bug的产生。
官方函数定义:in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
: boolneedle
需要查找的元素haystack
被查找的数组strict
如果该参数设置为true,则会使用严格比较模式去寻找元素。也就是说,在查找时,不仅比对要查找的元素与数组元素的值,还会比对其类型。默认为false。在忽略第三个参数的情况下,文章开头的问题输出会是true。因为未使用严格比较,那么函数在处理字符串与数字的比较时会尝试将字符串转换为整形/浮点型来做比较,比如"12ax"会转换为12。那么,上面的‘06’则会转换为6,因此输出为true。
而一开始自己并未注意到该函数具备第三个参数的设置,导致无论如何都得不到自己想要的结果
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30993.html
摘要:背景在公司入职,老大让我去做数据脱敏,通过调用运维组的数据脱敏接口,保证用户的敏感的信息不落地。公司项目主要使用和版本。 背景: 在A公司入职,老大让我去做数据脱敏,通过调用运维组的数据脱敏接口,保证用户的敏感的信息不落地。公司项目主要使用laravel5.1 和 YII1.1 版本。 具体方案: 敏感信息字段的调用存在与代码中的各个角落,如果手动对每一个地方的代码都去撸一边,所需要耗...
摘要:由于上传后文件后缀仍为,服务器仍将该上传文件以解析。文件是服务器中的一个配置文件,它负责相关目录下的网页配置。文件流实际应用文件系统包括对备用数据流的支持。在中,此默认数据流称为。 靶机搭建 推荐使用Windows系统搭建,我最先使用docker pull c0ny1/upload-labs的镜像在Pass-03遇到问题,初步判断是该镜像内的php.conf文件配置错误导致。 下载地...
摘要:示例先来看一个小示例输出为解释根据官方文档函数的描述在中搜索,如果没有设置则使用宽松的比较。第三个参数默认为,当和中的元素比较时会进行类型转换,相当于使用进行比较。值为默认值时,相当于,值为时,相当于。 示例 先来看一个小示例: $needle = 1abc; $haystack = array(1,2,3); var_dump(in_array($needle, $haystack)...
摘要:复杂的条件在的条件查询中,不只有这些基本的子句,还有等复杂一些的子句。这篇我们就来讲一下查询构造器如何构造这些复杂的查询语句。 复杂的条件 在 SQL 的条件查询中,不只有 where、or where 这些基本的子句,还有 where in、where exists、where between 等复杂一些的子句。而且即使是 where 这种基础的子句,也有多个条件的多种逻辑组合。这篇...
摘要:关联数组变量是否已设置并且非。返回数组所有值。成功返回失败返回原数组值需要能作为合法键名需要是或。内部指针数组分段栈队列回调函数排序计算数组生成其他 关联数组 isset bool isset( mixed $val [, mix $...]) 变量是否已设置并且非null。多个参数从左到右计算。 判断null $a=null;var_dump(isset($a));bool(fal...
阅读 4088·2023-04-26 01:48
阅读 3260·2021-10-13 09:40
阅读 1742·2021-09-26 09:55
阅读 3623·2021-08-12 13:23
阅读 1784·2021-07-25 21:37
阅读 3433·2019-08-30 15:53
阅读 1395·2019-08-29 14:16
阅读 1398·2019-08-29 12:59