【问题标题】:PHP Deprecated: Unparenthesized `a ? b : c ? d : e` is deprecatedPHP 已弃用:未加括号的 `a ?乙:丙? d : e` 已弃用
【发布时间】:2022-08-04 06:18:00
【问题描述】:

在我将 PHP 从 7.4 升级到 8.1 后,这只是一个我无法解决的警告,所以我需要一些帮助来更正我的函数以使其符合警告显示的风格。

    public static function ComparePrice($a, $b)
    {
        return (($a[1] * $a[2]) == ($b[1] * $b[2]) ? 0 : (($a[1] * $a[2]) < ($b[1] * $b[2])) ? 1 : -1);
    }

标签: php php-8.1


【解决方案1】:

致命错误 (PHP 8.1.7)

(($a[1] * $a[2]) == ($b[1] * $b[2]) ? 0 : (($a[1] * $a[2]) < ($b[1] * $b[2])) ? 1 : -1);
PHP Fatal error:  Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`

使其可读

$cases = [
    ['a' => 1, 'b' => 1,],
    ['a' => 0, 'b' => 1,],
];

foreach ($cases as $case) {
    $a = $case['a'];
    $b = $case['b'];
    $aProduct = $a * $a; // $a[1] * $a[2]
    $bProduct = $b * $b; // $b[1] * $b[2]
    $res = ($aProduct == $bProduct ? 0 : $aProduct < $bProduct)
        ? 1
        : -1;
    var_dump($res);
}

最好引入一个额外的变量:可读和可调试

...
$tmpRes = $aProduct == $bProduct ? 0 : $aProduct < $bProduct;
$res = $tmpRes ? 1 : -1;
var_dump($res);

【讨论】:

    【解决方案2】:

    使其更具可读性

    public static function ComparePrice($a, $b){
        $condition1 = ($a[1] * $a[2]) == ($b[1] * $b[2]);
        $condition2 = ($a[1] * $a[2]) < ($b[1] * $b[2]);
        return $condition1 ? 0 : ($condition2 ? 1 : -1);
    }
    

    【讨论】:

      【解决方案3】:

      三元运算符现在需要更多的括号。 正常使用是 (测试?第一:第二)。您嵌套了一个并错过了正确的一个。

      我将重写您的代码如下:

      返回 ( ($a[1] * $a[2]) == ($b[1] * $b[2]) ? 0: ( ($a[1] * $a[2]) < ($b[1] * $b[2]) ? 1:-1) );

      【讨论】:

        【解决方案4】:

        对我有用的是这样拆分声明:

        public static function ComparePrice($a, $b){
             return 
                (($a[1] * $a[2]) == ($b[1] * $b[2]) ?
                    0 
                : 
                    (($a[1] * $a[2]) < ($b[1] * $b[2])) ?
                        1
                    : 
                       -1
                    )
                );
            }
        

        希望这可以帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-09
          • 2021-08-14
          • 1970-01-01
          • 1970-01-01
          • 2014-04-13
          相关资源
          最近更新 更多