我一直在使用php简单的图像库进行图像操作很长一段时间(之前从未遇到过这个错误)。
现在,当代码联机并且本地服务器中没有发生错误时,脚本停止抛出语法错误
显示错误:
**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函数都有相同的片段
我的同事也多次使用Google搜索,但没有改进。
谢谢你们
答案 0 :(得分:2)
就像
($condition) ? true : false;
如果expr1的计算结果为TRUE,则表达式(expr1) ? (expr2) : (expr3)
的计算结果为expr2;如果expr1的计算结果为FALSE,则结果为expr3。
从PHP 5.3开始,可以省略三元运算符的中间部分。如果expr1的计算结果为TRUE,则表达式expr1 ?: expr3
返回expr1,否则返回expr3。
参考http://php.net/manual/en/language.operators.comparison.php
答案 1 :(得分:1)
短格式三元仅适用于PHP> = 5.3。您的某个环境可能正在运行旧版本。要修复,升级或只是更改代码以使用传统的三元形式:
$height = $height ? $height : $width;
仅供参考,在这里使用三元组是很奇怪的($height
被分配给它自己)。如果你想继续进行重构,那么更可读的选择是:
if (!$height) {
$height = $width;
}
由于这是第三方库,您可能根本不想修改代码。在这种情况下,您可以选择查找包含所需功能的旧版本,但目标是生产盒上的旧版PHP或升级PHP版本。