Php 分析错误:语法错误,意外(';)';,期望::(T_PAAMAYIM_NEKUDOTAYIM)

Php 分析错误:语法错误,意外(';)';,期望::(T_PAAMAYIM_NEKUDOTAYIM),php,function,constants,Php,Function,Constants,我有以下代码 define("SCRIPT_URL", ""); function ifScriptFolder() { if(isset(SCRIPT_URL) && !empty(SCRIPT_URL)) { echo "/".SCRIPT_URL."/"; } else { echo "/"; } } 但它给了我以下错误: Parse error: syntax error, unexpected ')', expe

我有以下代码

define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(isset(SCRIPT_URL) && !empty(SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}
但它给了我以下错误:

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

有人能看到这里出了什么问题或如何修复它吗?

如果您试图确定常量是否存在,请尝试使用或不使用


发件人:

功能:

如果已定义名称给定的命名常量,则返回TRUE,否则返回FALSE

功能:

返回常量的值,如果未定义常量,则返回NULL


固定功能:

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

defined()
函数是一个更好的解决方案,因为如果未定义常量,它将不会发出
E_警告。

PHP不是变量,因此您不会使用
isset
empty
来检查它们

相反,您可以使用:

要返回一个布尔值,如果字段已定义,则返回布尔值,如果已定义,则对该值进行标准比较,以检查其是否真实


还值得注意的是(供将来参考)这不是一个常规函数;它是一种“语言构造”,不能用于变量之外的任何东西(即不能用于函数的返回值)。与PHP 5.5之前的版本相同。

如果要查看变量是否存在,请使用
isset()
,并且
defined()
仅适用于常量

如果要检查常量是否为空,则不能使用:

if (empty(B)) // syntax error
if (empty(constant('B'))) // fatal error
可以将常量转换为布尔值:

if((boolean) A) {
}
因此,您可以将代码更改为:

<?php
define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}

谢谢你的帮助!以前从未检查过定义的常数。:)。当它允许我的时候,我会接受。我发布了一个答案来说明如何判断一个常数是空的。请看一看。
defined()
需要字符串参数:
defined('SCRIPT\u URL')
,而不是
defined(SCRIPT\u URL)
。对不起,您是对的。我打断了答案,tks。同意应该使用这些函数。但是,问题是关于解析或编译错误,即脚本甚至没有运行,因此这些函数如何能起到帮助作用?@fuzzybee关于常量的误用和误用
isset()
。作为结果-解析错误。
<?php
define("SCRIPT_URL", "");
function ifScriptFolder() {
    if(defined('SCRIPT_URL') && !((boolean)SCRIPT_URL)) {
        echo "/".SCRIPT_URL."/";
    } else {
        echo "/";
    }
}