?:在旧版本的PHP中导致解析错误

时间:2013-11-07 20:33:14

标签: php ternary-operator

我一直在使用SimpleImage类进行图像处理,但它不能在一个特定的站点上运行,服务器上的PHP版本是5.1.6 - 所以六年之久

解析错误:语法错误,意外':'在......

导致错误

的问题
$height = $height ?: $width; 
$quality = $quality ?: $this->quality;
$filename = $filename ?: $this->filename;

有解决方法吗?

2 个答案:

答案 0 :(得分:4)

三元运算符速记$val1 ?: $val2introduced in PHP 5.3,与$val1 ? $val1 : $val2

相同

答案 1 :(得分:3)

因为你在三元运算符中缺少一个参数,所以它应该是这样的语法:

$height = $height ? $height : $width;
$quality = $quality ? $quality : $this->quality;
$filename = $filename ? $filename : $this->filename;

应该有2个变量?符号,用:符号分隔。 如果条件(在?之前)为真,则第一个变量是设置的值。 第二个变量是条件为假时设置的值。

编辑:

语法?:仅在PHP 5.3版本之后可用,请确保您运行的是php 5.3或更高版本。