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 "/";
}
}