到目前为止,我一直无法在官方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;
}
这在技术上可行,但不是语言给出的句法简写。
答案 0 :(得分:6)
不,PHP没有这样的东西。
答案 1 :(得分:2)
当你有大量的东西需要比较时,你可以做这样糟糕的事情。
<?php
$arr = [1, 2, 3];
$less_than = function($a, $b) {
return $a < $b;
};
$greater_than = function($a, $b) {
return $a > $b;
};
function apply_operator($arr, $operator) {
for ($i = 0; $i < sizeof($arr) - 1; $i++) {
if (!$operator($arr[$i], $arr[$i + 1])) {
return false;
}
}
return true;
}
var_dump(apply_operator($arr, $less_than)); // true
var_dump(apply_operator($arr, $greater_than)); // false
但是,对于大于/小于你可以排序和比较原始,并且为了相同,你可以检查array_unique
的大小。