我明白,在下面的代码中……

$foo = TRUE;

$bar = 1;

if ($foo === TRUE)

{

echo 'Foo';

}

if ($bar === TRUE)

{

echo 'Bar';

}

…因为类型比较,只会打印Foo.

但是,我的问题是……

if ($foo === TRUE)

{

echo 'Foo1';

}

if (TRUE === $foo)

{

echo 'Foo2';

}

…因为据我所知,它们是相同的,但我记得在某个地方读到它们不是.我只是在梦想有关PHP的奇怪内容,还是实际上有区别?

谢谢!

解决方法:

它是一样的 – 只有当你把$foo放在右侧时,当你只使用一个“=”符号时,你可以避免那个可怕的错误.所以使用“左对比”是一个很好的做法.考虑一下:

// These 4 lines intended for the same check

// Notice the subtle differences!

if("secret_thing" = $password) {...} // you get an error but that's it

if("secret_thing" == $password) {...} // this is perfect

if($password == "secret_thing") {...} // this is acceptable

if($password = "secret_thing") {...} // you're deep in trouble, friend!

//

左边是文字,最糟糕的事情就是你得到一条错误信息.没什么大不了.右边是文字(还有一个小错字),窃贼就在你的起居室里.

实际上,这个拼写错误很容易制作,例如,如果你使用Pascal / Delphi / Lazarus,你有’:=’作为赋值,简单的’=’表示比较.当你这样做时,没有任何警报; PHP会认为他理解你.

TLDR:这是一个安全措施.

附注:您还可以使用比较功能来提高可读性.但是那个需要一些额外的微秒,所以在高性能的情况下只需坚持好旧的“==”/“===”符号.

标签:php,boolean

来源: https://codeday.me/bug/20190722/1507915.html

foo php,php – $foo === TRUE和TRUE === $foo有什么区别?相关推荐

  1. return true Java_[Java教程]js中return,return true,return false的用法及区别

    [Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...

  2. pytorch中的value, top = prob.topk(1, dim=1, largest=True, sorted=True)

    函数: prob = F.softmax(logit, 1)#按行softmax,行和为1 value, top = prob.topk(1, dim=1, largest=True, sorted= ...

  3. loctionplace.reset_index(drop=True,inplace=True)

    loctionplace.reset_index(drop=True,inplace=True)@TOC

  4. RMD kint 不输出 include=TRUE,echo=TRUE

    r```{r include=TRUE,echo=TRUE} kint r```

  5. new FileOutputStream(“data\\test2.txt“,true),true是什么意思

    官方文档如下表示 Creates a file output stream to write to the file with the specified name. If the second ar ...

  6. vue 保存全局变量_Vue+Typescript起手式

    TypeScript是什么? TypeScript 是一种由微软开发的自由和开源的编程语言.它是 JavaScript 的一个超集,TypeScript 在 JavaScript 的基础上添加了可选的 ...

  7. javascript面向对象系列第一篇——构造函数和原型对象

    前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如何用构造函数和原型对象来创建对象 构造函数 构造函数是 ...

  8. 【复习资料】ES6/ES7/ES8/ES9资料整理(个人整理)

    一.介绍 现在的网络上已经有各样关于 ECMAScript 规范介绍和分析的文章,而我自己重新学习一遍这些规范,整理出这么一份笔记,比较精简,主要内容涵盖ES6.ES7.ES8.ES9,后续会增加面试 ...

  9. 教你搭建基于typescript的vue项目

    自尤大去年9月推出vue对typescript的支持后,一直想开箱尝试,对于前端sr来说,vue的顺滑加上ts的面向对象,想着就非常美好~ 终于在两个月前,找到了个机会尝试了一把vue+ts的组合. ...

最新文章

  1. 【Oracle】ORA 01810 格式代码出现两次-转
  2. python 搜索二维矩阵
  3. 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
  4. 检查Java测试中发生了什么
  5. django--通过model拿到字段对象
  6. 2月第3周国内域名商TOP10:爱名网排名升至第八
  7. 微信支持环信_环信客户互动云v5.39已发布:支持微信小程序接入
  8. top-1和top-5正确率与错误率以及目标检测评价指标
  9. Babel 6.25 版本发布,JavaScript 编译器
  10. 40.django中重要概念
  11. java 15道经典,15道非常经典的Java面试题
  12. java后台开发工作职责_JAVA后台开发岗位职责
  13. 2020年中国天线行业发展现状及细分市场结构分析[图]
  14. App中使用微信公众号的模版消息来进行消息推送
  15. css的sprites什么意思,CSS Sprites是什么
  16. Java实现 LeetCode 717 1比特与2比特字符(暴力)
  17. svchost.exe占用网速多
  18. STM32调试过程 常见错误及解决方案
  19. Live Home 3D for Mac汉化破解版永久激活方法
  20. 5 个牛逼的算法设计,你知道几个?

热门文章

  1. Spring Boot 缓存应用实践
  2. Spring 的 Controller 是单例还是多例?怎么保证并发的安全
  3. 有趣的开源 AI 换脸工具:faceswap
  4. linux+取消磁盘阵列,Linux下彻底关闭某个RAID磁盘阵列
  5. android pdf阅读工具,android pdf 阅读器开发, pdf demo, pdf第三方控件
  6. android 无法安装测试版本,在测试应用更新时,安装无提示阻止Android版本构建签名APK...
  7. opencv 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突
  8. 加权残差连接ReZero
  9. could not export python function call Remove calls to Python functions before export
  10. Python 3.6 安装 Shapely