2016-02-27 109 views
6

我想寫一個新行與PHP文件,我收到以下錯誤:爲什麼我在PHP中出現語法錯誤?

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) 

這是我的代碼:

public function add_line($line, $value, $file){ 

     $CI =& get_instance(); 
     $CI->load->helper('file'); 

     foreach($this->existing_langs as $lang){ 

      $lang_contents = read_file($this->lang_path.'/'.$lang.'/'.$file.'_lang.php'); 

      $new_contents = $lang_contents."\n$lang['".$line."'] = '".$value."';"; //Error happens on this line 

      write_file($this->lang_path.'/'.$lang.'/'.$file.'_lang.php', $new_contents, 'w+'); 

     } 

    } 

我已經指出了行了用php評論發生錯誤。這條線有什麼問題? lang_contents的

實施例:new_contents的

<?php 
$lang['1234'] = 'Restaurants'; 

實施例:

<?php 
$lang['1234'] = 'Restaurants'; 
$lang['1235'] = 'Transportation'; 

回答

7

如果你想要寫$lang作爲字符串文件

$lang_contents."\n".'$lang'."['".$line."'] = '".$value."';"; 

封閉$lang"將只訪問您的$lang這是否是數組。因爲您在文件路徑中使用$lang。我認爲這不是一個數組。因此,使用..."\n$lang['".$line."']...只會調用$lang用雙引號中$line

3

嘗試這種

public function add_line($line, $value, $file){ 

     $CI =& get_instance(); 
     $CI->load->helper('file'); 

     foreach($this->existing_langs as $lang){ 

      $lang_contents = read_file($this->lang_path.'/'.$lang.'/'.$file.'_lang.php'); 

      $new_contents = $lang_contents."\n$lang\['".$line."'] = '".$value."';"; //Error happens on this line 

      write_file($this->lang_path.'/'.$lang.'/'.$file.'_lang.php', $new_contents, 'w+'); 

     } 

    } 
+0

你幾乎已經......但是$ lang應該是文字。 – ShoeLace1291

3

這將具有可變$lang的值。

$new_contents = $lang_contents."\n" . $lang . "['".$line."'] = '".$value."';"; 
4

這可能是字符串試圖獲取$ lang作爲一個值。雙引號允許變量在那裏傳遞值。使用單引號。試試看看會發生什麼。

試試這行代碼

$new_contents = $lang_contents . "\n".'$lang[\'' . $line . '\'] = \'' . $value . '\';'; 

編輯:爲了寫這個最乾淨的方式做到這一點

$new_contents = "$lang_contents\n\$lang['$line'] = '$value';"; 
+0

關閉,但\ n從字面上返回。 – ShoeLace1291

+0

再試一次,編輯後。 –

4

字符串進行評估的指標:在你的代碼,PHP會評估$lang[但因爲PHP預計$lang(變量)或$lang[n](數組中此產生一個錯誤)。

你想要的輸出是什麼?

如果你希望輸出字面上$其次lang人物,你必須逃脫$

$new_contents = $lang_contents."\n\$lang['".$line."'] = '".$value."';"; 

如果你想輸出$lang變量後跟一個[的內容,你必須寫:

$new_contents = $lang_contents."\n$lang"."['".$line."'] = '".$value."';"; 

否則,如果要輸出$lang[$line]數組項的內容,則必須寫入:

$new_contents = $lang_contents."\n{$lang[$line]} = '".$value."';"; 
相關問題