6

到目前为止,我一直无法在官方 PHP 文档或此站点上找到此信息。因此,这可能意味着我正在使用错误的术语进行搜索,或者它不受支持。我在找什么?我会描述它...

假设我在 PHP 中有以下比较:

if (($a == $b) && ($b == $c))
    doSomething();
else
    doSomethingElse();

if (($d < $e) && ($e < $f))
    doSomething();
else
    doSomethingElse();

PHP 是否有某种语法将比较链接在一起,而无需两个不同比较的显式 AND-ing?例如,这样的事情是否可能:

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;
}

这在技术上是可行的,但不是语言给出的句法简写。

4

2 回答 2

9

不,PHP 没有这样的东西。

于 2013-02-25T15:53:09.350 回答
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.

于 2013-02-25T16:02:20.423 回答