Php语法错误混淆
我已经使用php simple image Librarray进行了相当长一段时间的图像处理(以前从未遇到过这个错误) 现在,当代码联机并且本地服务器中没有发生错误时,脚本停止抛出语法错误 错误显示: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
**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。我已经把它添加到我的答案中了。