1

我一直在使用 php simple image libraray 进行图像处理(以前从未遇到过这个错误)。

现在脚本在代码上线时停止抛出语法错误并且本地服务器没有发生错误

显示的错误:

 **Parse error: syntax error, unexpected ';' in path-to-simpleimage/SimpleImage.php on line 128**

 and the 128th line of code is 

**$height = $height ?: $width;**

我无法识别该行中“?:”的语法和用法,并且simpleimage的几乎每个函数中都有相同的片段

还和我的同事一起用谷歌搜索了很多次,但没有任何改善。

感谢你们

4

2 回答 2

2

它像是

   ($condition) ? true : false;

如果 expr1的计算结果为 TRUE,则表达式的(expr1) ? (expr2) : (expr3)计算结果为 expr2,如果 expr1 的计算结果为 FALSE,则表达式的计算结果为 expr3。

从 PHP 5.3 开始,可以省略三元运算符的中间部分。expr1 ?: expr3如果 expr1 的计算结果为 TRUE,则表达式返回 expr1,否则返回 expr3。

参考http://php.net/manual/en/language.operators.comparison.php

于 2013-11-05T05:42:22.440 回答
1

短格式三元仅在 PHP >= 5.3 中可用。您的一个环境可能正在运行旧版本。要修复,请升级或仅更改代码以使用传统的三元形式:

$height = $height ? $height : $width;

仅供参考,在这里使用三元组有点奇怪($height分配给自己)。如果你想继续重构,这里更易读的选择是:

if (!$height) {
    $height = $width;
}

由于这是一个第 3 方库,您可能根本不希望修改代码。在这种情况下,您的选择是找到包含您需要的所有功能但针对您的生产设备上的旧版本 PHP 的旧版本,或者升级您的 PHP 版本。

于 2013-11-05T05:45:15.670 回答