为了账号安全,请及时绑定邮箱和手机立即绑定

PHP - 条件中的值顺序 AKA 尤达表示法

PHP - 条件中的值顺序 AKA 尤达表示法

PHP
BIG阳 2022-08-19 15:51:51
原始问题我前段时间在一篇文章中读到,由于某种原因,我找不到在进行比较时顺序很重要。我找不到任何关于PHP中比较顺序的信息。它显然不会做出戏剧性的变化,但我很好奇这是否有任何优点。在整个项目中,我正在研究的比较是作为.以相反的顺序进行比较是否有任何区别,例如?$x === truetrue === $x结论显然,我在原始问题中提到的是一种称为“尤达条件”的编程风格。这个wiki页面给出了关于这种风格的很好的解释。这个答案让我理解了这个概念,只是注意到那里有一个小错误。以下是我对此的看法:使用此样式的主要原因是避免意外分配,当您打算与 进行比较时。===如果要检查变量是否与进行比较时的值相同,请使用:if(false == $var) // evaluates to true if $var is equal to false多if($var == false) // evaluates to true if false is equal to $var防止if($var = false) // assigns false to $var and evaluates to false而if(false = $var) // is a syntax error如果要检查变量是否与进行比较时的值严格相同,请使用:if(false === $var) // evaluates to true if $var is identical to false多if($var === false) // evaluates to true if false is identical to $var在使用尤达风格的上下文中,这并不重要,因为严格比较并不是一个真正的问题,因为它很难混淆,但如果你使用它,那么也使用它来保持一致。=========总而言之,我认为尤达符号的优点在于它在一个条件下的比较和分配之间所强调的区别。
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

这些被称为“尤达比较”。因为这并不重要,但请考虑以下几点:=====

if($a = 0)

在这种情况下,设置为零,而不是比较。此外,您认为您正在进行的比较根本不会进行评估,但比较操作将继续进行,就好像进行了比较一样。它总是会落入错误的翻转它:$a

if(0 = $a)

现在将引发错误。


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信