【发布时间】:2023-03-30 21:15:01
【问题描述】:
到目前为止,我一直无法在官方 PHP 文档或此站点上找到此信息。 因此,这可能意味着我正在使用错误的术语进行搜索,或者它不受支持。 我在找什么? 我来描述一下……
假设我在 PHP 中有以下比较:
if (($a == $b) && ($b == $c))
doSomething();
else
doSomethingElse();
if (($d < $e) && ($e < $f))
doSomething();
else
doSomethingElse();
PHP 是否有某种语法可以将比较链接在一起,而无需对两个不同的比较进行显式 AND 运算? 例如,这样的事情是否可能:
if ($a == $b == $c)
doSomething();
else
doSomethingElse();
if ($d < $e < $f)
doSomething();
else
doSomethingElse();
请注意,我正在寻找该语言的句法速记。 我知道我可以轻松地为这些链式比较中的每一个编写一个函数,但这是一个笨拙的解决方法,而不是理想的。 例如:
function chainedGreaterThan($args)
{
for ($i = 0; $i < count($args) - 1; $i++)
if ($args[$i] <= $args[$i + 1])
return false;
return true;
}
这在技术上是可行的,但不是语言给出的语法简写。
【问题讨论】:
-
没试过,但是像 php 一样脏,它应该可以工作
-
不,但是来吧,你为什么不能只使用
$d < $e && $e < $f?而且,最重要的是,当他们试图将$b == $c的结果 与$a进行比较时应该怎么做? -
@raina77ow ($b == $c) == $a 怎么样?链式比较运算符并不奇怪。 Python 和 Perl 6 也都支持它,而且这种表示法在基础数学中很常见。
-
@Kevin 我强烈反对使用括号来增加运算符的含义。这里
($b == $c) == $a意味着一件事 - '将 $b == $c 的结果与 $a 进行比较',而$b == $c == $a则真正不同。