【问题标题】:?: in old version of PHP causing parse error?: 在旧版本的 PHP 中导致解析错误
【发布时间】:2013-11-07 20:33:14
【问题描述】:

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

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

导致错误的行

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

有解决办法吗?

【问题讨论】:

  • $height = $height ? $宽度:$宽度;
  • $height = $height ? $height : $width;

标签: php ternary-operator


【解决方案1】:

三元运算符简写$val1 ?: $val2introduced in PHP 5.3,与$val1 ? $val1 : $val2 相同

【讨论】:

    【解决方案2】:

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

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

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

    编辑:

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

    【讨论】:

    • @user2864740 是三元运算符,只是常用的简写形式
    • 直到现在才意识到它的简写版本!为了可读性,我仍然更喜欢更长的语法。
    • 非常感谢,确定这是我不知道的某种速记问题,但搜索“?:”并没有显示任何使用页面。
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多