2016-02-27 18 views
6

मैं PHP के साथ एक फ़ाइल को एक नई लाइन लिखने की कोशिश कर रहा हूँ और मैं निम्नलिखित त्रुटि हो रही है:मुझे PHP में सिंटैक्स त्रुटि क्यों मिल रही है?

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+'); 

     } 

    } 

मैं रेखा ने बताया है:

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

यह मेरा कोड है एक PHP टिप्पणी के साथ त्रुटि होती है। इस लाइन में क्या गलत है?

lang_contents का उदाहरण:

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

new_contents का उदाहरण:

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

उत्तर

7

कर

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

संलग्न" के साथ बस आपके $lang तक पहुंच जाएगा जो एक सरणी है या नहीं। अपने फ़ाइल पथ में $lang का उपयोग करने के बाद से। मुझे लगता है कि यह एक सरणी नहीं है। इसलिए ..."\n$lang['".$line."']... का उपयोग कर बस के $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

आपके पास लगभग था ... लेकिन $ लैंग को शाब्दिक माना जाना चाहिए। – ShoeLace1291

3

यह चर $lang का मूल्य होगा।

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

यह संभव है कि तार मूल्य के रूप में $ लैंग लेने की कोशिश कर रहे हैं। डबल कोट्स वैरिएबल के पास पास होने वाले मान के लिए अनुमति देते हैं। एकल उद्धरण का प्रयोग करें। इसे आज़माएं और देखें कि क्या होता है।

कोड की इस पंक्ति की कोशिश

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

संपादित करें: यदि आपका अपनी फ़ाइल को $lang स्ट्रिंग के रूप में लिखने की कोशिश कर स्पष्ट तरीका यह लिखने के लिए, यह

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

बंद करें, लेकिन \ n सचमुच लौटाता है। – ShoeLace1291

+0

इसे फिर से प्रयास करें, संपादित पोस्ट। –

4

दोहरे उद्धरण में स्ट्रिंग मूल्यांकन किया जाता है एक सूचकांक के साथ $lang कॉल करेंगे: अपने कोड, 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."';"; 
संबंधित मुद्दे