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

$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. 劝大家逃离互联网!某前互联网员工自述:从互联网到传统行业,工资多,不加班,有户口,能买房!...
  2. mysql备份恢复实验
  3. 转载--web前端工程化
  4. string java getbytes_从 String.getBytes 理解 Java 编码和解码
  5. oracle 次月,Oracle日期查询:季度、月份、星期等时间信息
  6. html 字符串最后加空格,html space空格符
  7. 【C++grammar】文件I/O流的基本用法
  8. 教你正确设置CrossOver的Wine配置(一)
  9. 嵌入式Ubuntu 搭建caffee环境
  10. HTML计算机代码元素
  11. codeblock 添加 .lib 文件
  12. 京瓷m1025维修模式进不去_京瓷1025打印机无法扫描怎么处理?
  13. 学习windows编程 day3 之 自定义画笔的两种方法
  14. Mac快捷键【窗口最小化、切换窗口】
  15. python OpenCV 颜色通道问题 子图颜色异常问题
  16. uni-app 的 tabBar 图标自制方法
  17. 固定IP和自动IP切换bat脚本
  18. oracle11g64位怎么用sql,PLSQLDeveloper连接Oracle11g64位数据库配置详解(图文)
  19. python统计指定数字和_Python实现统计给定列表中指定数字出现次数的方法
  20. 同步线程和异步线程的区别

热门文章

  1. 每日一皮:2020年度最佳微小说...
  2. Redis在Linux系统的配置优化
  3. 每日一皮:从项目的开始到结束,开发人员的变化...
  4. 从零到两百台服务器的创业野蛮生长史
  5. 用命令行在控制台里玩斗地主,试过没?
  6. 微服务之旅:从 Netflix OSS 到 Istio Service Mesh
  7. 重磅:Elasticsearch上市!市值近50亿美元
  8. 金九银十铁12,看完弄懂,工资少说加 5K
  9. 基于Python操作ElasticSearch
  10. python print进度条效果