2012-01-14 97 views
0

我收到一個未定義的變量錯誤,我試圖添加var $nx = '';但這並沒有幫助。我錯過了什麼嗎? 注意:未定義的變量:NX在/home/social/public_html/kernel/parser.php在線55試圖定義一個,未定義的變量錯誤

   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

你在哪裏放$ NX = 「」? – kukipei 2012-01-14 09:43:52

+0

位於文件頂部,其中定義了其他幾個var – acctman 2012-01-14 09:46:12

回答

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 = ''; 
          } 
        } 
+0

這對我工作感謝。 – acctman 2012-01-14 09:57:51

0

因爲你在,如果塊定義它,但假設它存在於其他塊,也就是說,如果與條件不匹配,將使用什麼?

此行後對其進行初始化,因此,如果,ELSEIF和其他所有有變量初始化爲空字符串(如你想的話):

$s = chop(fgets($f,4096)); 
$nx = ''; 

或整個塊之前完全

編輯:

但是一個更好的解決辦法是告訴什麼$ NX應該來自於,因爲你是假設它無處不在,它是一個空字符串不同。那麼,它應該保持什麼?無論如何,不​​管它必須包含,它都存在。讀你代碼的第二次,我看到你想讓它不爲空字符串很多地方..

另外,如果你的代碼是一個函數或不是的一部分,你沒有提到。如果是這種情況,考慮該函數有一個範圍,所以如果你定義以外,你需要將它提供給該函數或函數的函數將看不到它。