关于php:语法错误,syntax error, unexpected ‘)’, expecting :: (T_PAAMAYIM_NEKUDOTAYIM)

Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM)

本问题已经有最佳答案,请猛点这里访问。

我有以下代码

1
2
3
4
5
6
7
8
define("SCRIPT_URL","");
function ifScriptFolder() {
    if(isset(SCRIPT_URL) && !empty(SCRIPT_URL)) {
        echo"/".SCRIPT_URL."/";
    } else {
        echo"/";
    }
}

但它给了我以下错误:

1
Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in *(path)* on line 3

有人能看到这里出了什么问题吗?或者怎么解决?


如果你试图确定,如果存在常数,然后尝试使用defined()constant()isset(),困境。

从可以:

功能:defined()

Returns TRUE if the named constant given by name has been defined, FALSE otherwise.

功能:constant()

Returns the value of the constant, or NULL if the constant is not defined.

固定功能:

1
2
3
function ifScriptFolder() {
    echo defined('SCRIPT_URL') ?"/" . constant('SCRIPT_URL') ."/" :"/"
}

更新:

这是一个更好的解决方案defined()功能本,因为它不需要什么或E_WARNINGIF常数定义。


PHP常量是不可变的,所以你不要使用issetempty检查他们。

相反,你可以使用defined

1
defined('SCRIPT_URL')

返回a的一场被定义为布尔值,如果这样做,如果它是一个标准的比较,如果它是truthy值检查。

这一价值(未来的参考isset)这不是一个正则函数;它是一个"语言使用和构建"什么不能做在变量(即不能使用返回值是一个函数)。一个PHP empty升到5.5。


如果你想看到,如果一个变量的值,使用isset()只适用于一个常数,与defined()

如果你想检查是否是空的(恒定的困境,你可以使用:

1
2
if (empty(B)) // syntax error
if (empty(constant('B'))) // fatal error

你可以转换一个布尔:《不朽的

1
2
if((boolean) A) {
}

所以,你可以改变你的代码:

1
2
3
4
5
6
7
8
9
<?php
define("SCRIPT_URL","");
function ifScriptFolder() {
    if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) {
        echo"/".SCRIPT_URL."/";
    } else {
        echo"/";
    }
}