我收到一个未定义的变量错误,我尝试添加var $nx = '';
,但这没有帮助。我错过了什么吗? 注意:未定义的变量:第55行/home/social/public_html/kernel/parser.php中的nx
while (!feof($f)) {
$s = chop(fgets($f,4096));
if ($s == '') continue;
if (substr($s,0,5) == '<!--[') {
if ($nx != '') $this->templ[] = $nx;
$this->templ[] = $s;
$nx = '';
}
elseif (substr($s,0,5) == '<?php') {
if ($nx != '') $this->templ[] = $nx;
$nx = $s;
}
else
////// LINE 55 $nx .= ($nx != '' ? "\n" : '').$s;
if (substr($nx,-2) == '?>') {
$this->templ[] = $nx;
$nx = '';
}
}
答案 0 :(得分:2)
您在if块中定义了var。
这是正确的代码:
$nx = '';
while (!feof($f)) {
$s = chop(fgets($f,4096));
if ($s == '') continue;
if (substr($s,0,5) == '<!--[') {
if ($nx != '') $this->templ[] = $nx;
$this->templ[] = $s;
$nx = '';
}
elseif (substr($s,0,5) == '<?php') {
if ($nx != '') $this->templ[] = $nx;
$nx = $s;
}
else
$nx .= ($nx != '' ? "\n" : '').$s;
if (substr($nx,-2) == '?>') {
$this->templ[] = $nx;
$nx = '';
}
}
答案 1 :(得分:0)
因为您在if块中定义它,但假设它存在于 else 块中,即当if与条件不匹配时使用的内容!
在这一行之后初始化它,以便if,elseif和else都将变量初始化为空字符串(如你所愿):
$s = chop(fgets($f,4096));
$nx = '';
或整个街区之前
修改强>
但更好的解决方案是告诉$ nx应该来自哪个,因为你假设它存在的任何地方,它与空字符串不同。那么,它应该持有什么? 无论如何,确保无论它必须包含什么,它都存在。再次阅读你的代码,我在许多地方看到你希望它不是一个空字符串..
此外,您没有提及您的代码是否是函数的一部分。如果是这种情况,请考虑该函数是否具有范围,因此如果您在外部定义该函数,则需要将其提供给该函数,否则该函数将无法看到它。