博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组中 == 比较运算符注意事项
阅读量:5322 次
发布时间:2019-06-14

本文共 784 字,大约阅读时间需要 2 分钟。

PHP中的 == 比较运算符表示:当两个数据的值相等的时候,返回 true ,反之则返回 false。注意,这里说的是值相当的时候,结果就为 true,也就是说,这里并不会去比较值的类型。比如:12 == '12' 结果会是 true

由于PHP变量的弱类型,很多时候并没有去刻意地管变量的类型是什么,而这次出现的问题则就是因为变量类型导致的。

我的问题是出现在使用 array_search 函数的时候。

array_search 的作用是用给定的值到一个数据中进行检索,说值存在,则返回该值对应的索引。若该值出现多次,则返回第一个检索到的索引。若值不存在,则返回 false

我的问题出现在类似于以下的环境下:

'123', 'b' => 'iphp8.com', 'c' => '014778', 'd' => '14778',);echo array_search('14778', $testA);

这时得到的结果会是 c

由于默认情况下,array_search 并不会去比较值的类型,也就是做 == 比较。纯数字的时候,哪怕是字符串,貌似也是转为数字进行比较,所以不管有多少个前置0,都没有关系,"14778" 和 "014778"就是相等的,所以上面的例子中,返回的结果是 c,而不是我们认为的d

这个时候,为了得到我们想要的结果,就需要进行 === 比较了,既要比较值,也要比较类型。

而对于 array_search 来说,我们给它的第三个参数给 true 值就可以进行全等比较了

另外 in_array 跟array_search用法相同

 

原文地址:http://www.iphp8.com/?post=55

转载于:https://www.cnblogs.com/maomaoc/p/5553155.html

你可能感兴趣的文章
记Angular与Django REST框架的一次合作(2):前端组件化——Angular
查看>>
08.存储Cinder→5.场景学习→08.Backup Volume→1.概述与配置
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
spring11----基于Schema的AOP
查看>>
解决input框自动填充为黄色的问题
查看>>
音视频基础知识(一)
查看>>
CyclicBarrier的使用
查看>>
小程序开发笔记
查看>>
Web框架高级功能之模板、拦截器、Json、打包
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
安装scikit-learn过程记录
查看>>
数据库的标识符可以有多长
查看>>
新手村之循环!循环!循环!
查看>>
在创业公司上班的感受
查看>>
Shell脚本
查看>>
masm32V11配置
查看>>
ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath
查看>>
通过Python、BeautifulSoup爬取Gitee热门开源项目
查看>>