Php语法错误混淆

Php语法错误混淆,php,syntax-error,Php,Syntax Error,我已经使用php simple image Librarray进行了相当长一段时间的图像处理(以前从未遇到过这个错误) 现在,当代码联机并且本地服务器中没有发生错误时,脚本停止抛出语法错误 错误显示: **Parse error: syntax error, unexpected ';' in path-to-simpleimage/SimpleImage.php on line 128** and the 128th line of code is **$height = $heig

我已经使用php simple image Librarray进行了相当长一段时间的图像处理(以前从未遇到过这个错误)

现在,当代码联机并且本地服务器中没有发生错误时,脚本停止抛出语法错误

错误显示:

 **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的几乎每个函数中都有相同的代码片段

也和我的同事在谷歌上搜索了很多次,没有任何改进

谢谢大家

就像

   ($condition) ? true : false;
表达式
(expr1)?(expr2):(expr3)
如果expr1的计算结果为TRUE,则计算结果为expr2;如果expr1的计算结果为FALSE,则计算结果为expr3

由于PHP5.3,可以省略三元运算符的中间部分。表达式
expr1?:如果expr1的计算结果为TRUE,则expr3
返回expr1,否则返回expr3


参考

缩写形式的三元仅在PHP>=5.3中可用。您的一个环境可能正在运行旧版本。要修复此问题,请升级或更改代码以使用常规三元形式:

$height = $height ? $height : $width;
仅供参考,在这里使用三元组有点奇怪(
$height
被分配给它自己)。如果您想继续进行重构,这里有一个更具可读性的选择:

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

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

PHP版本的local:5.4.7 server:5.2.17与版本差异有任何关系128行代码应该是,$height=$height?$height:$width;所以我需要使用不同的(旧的)简单图像版本??这也是一个选项,jayadevkv。我已经把它添加到我的答案中了。