【问题标题】:php unexpected ')' parse error [duplicate]php意外')'解析错误[重复]
【发布时间】:2012-03-19 19:12:29
【问题描述】:

可能重复:
Can I use a function to return a default param in php?
Using function result as a default argument in PHP function

我正在尝试为函数设置默认值。我希望函数$expires 默认值为time() + 604800

我在努力

public function set($name,$value,$expires = time()+604800) {
    echo $expires;
    return setcookie($name, $value, $expires);
    }

但我得到一个错误。

解析错误:语法错误,第 38 行 /var/www/running/8ima/lib/cookies.lib.php 中出现意外的 '(',期待 ')'

我应该怎么写?

【问题讨论】:

  • 不会if (!$expires) { $expires = time() + 604800; } 这样做吗?

标签: php parsing syntax


【解决方案1】:
$expires = time()+604800

在函数定义中。

默认值不能是函数的结果,只能是简单的值 引用the manual:

默认值必须是一个常量表达式,而不是(例如)一个 变量、类成员或函数调用。

用途:

public function set($name,$value,$expires = NULL) { 
    if (is_null($expires))
        $expires = time()+604800;
    echo $expires; 
    return setcookie($name, $value, $expires); 
} 

【讨论】:

  • +1 第一个答案实际上解释了问题所在。
【解决方案2】:

您不能在参数声明中使用函数调用。

这样做:

public function set($name,$value,$expires = null) {
    if(is_null($expires)) $expires = time()+604800;
    echo $expires;
    return setcookie($name, $value, $expires);
}

【讨论】:

    【解决方案3】:

    试试这个:

    public function set($name,$value,$expires = NULL) {
        if(is_null($expires)) {
            $expires = time() + 604800;
        }
        echo $expires;
        return setcookie($name, $value, $expires);
    }
    

    【讨论】:

    • +1 如果你也能解释原因。
    【解决方案4】:

    你可以的

    public function set($name,$value,$expires = null) {
     if($expires === null){$expires = time()+604800);
     echo $expires;
     return setcookie($name, $value, $expires);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-20
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多