我正在尝试使用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的例子:
<?php
$lang['1234'] = 'Restaurants';
new_contents示例:
<?php
$lang['1234'] = 'Restaurants';
$lang['1235'] = 'Transportation';
答案 0 :(得分:7)
如果您尝试将$lang
作为字符串写入文件
$lang_contents."\n".'$lang'."['".$line."'] = '".$value."';";
<{1>将$lang
与"
括起来只会访问您的$lang
是否为数组。
因为您在文件路径中使用$lang
。我假设它不是一个数组。因此,使用..."\n$lang['".$line."']...
只会使用$lang
的索引来调用$line
答案 1 :(得分:4)
字符串可能会尝试将$ lang作为值。双引号允许变量具有在那里传递的值。使用单引号。试试这个,看看会发生什么。
尝试这行代码
$new_contents = $lang_contents . "\n".'$lang[\'' . $line . '\'] = \'' . $value . '\';';
编辑:要想用最干净的方式写这个,请执行此操作
$new_contents = "$lang_contents\n\$lang['$line'] = '$value';";
答案 2 :(得分: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."';";
答案 3 :(得分: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+');
}
}
答案 4 :(得分:3)
这将具有变量$lang
的值。
$new_contents = $lang_contents."\n" . $lang . "['".$line."'] = '".$value."';";