缺失报价某处T_STRING错误

问题描述:

这是推动我疯了,我知道它的一个简单的错误,但无论是我加或省掉了一个引号东西缺失报价某处T_STRING错误

echo "<option ". ($data['language'] == "" ? 'selected=selected>-- Select --</option>' : 'value=$data['language'] selected=selected'"); 
+0

你需要转义嵌入的双引号(“)吗?我会这么想,但我不知道PHP。 – 2010-12-06 09:23:31

+0

整个陈述没有意义。首先,一行135字符反对大多数编码惯例。在第一个表达式的周围还缺少一个右括号,并且第三个表达式中的插值也被打破。但即使您修复了这些内容并且有语言,您的选项标签也不完整。除非你使用XHTML中的HTML汤之一,否则你的属性周围也缺少引号。 – Gordon 2010-12-06 09:41:54

使用

echo "<option ". ($data['language'] == "" ? "selected=selected>-- Select --</option>" : "value=".$data['language']." selected=selected"); 

时出现不一致的使用引号/在线变量列入(所以是一个'哪里应该有一个“)

你不能用单引号做变量插值,特别是当使用单引号作为分隔符时。

echo "<option ". ($data['language'] == "" ? 'selected=selected>-- Select --</option>' : 'value=' . $data['language'] . ' selected=selected'"); 

变化:

'value=$data['language'] selected=selected' 

分为:

'value="'.$data['language'].'" selected=selected' 

echo "<option " 
    . ($data['language'] == "" 
    ? 'selected=selected>-- Select --</option>' : 
    'value=$data['language'] selected=selected'" //< This line 
    ); 

你可以使用相同的报价从$ data数组选择你看到那么你需要做的:

echo "<option " . ($data['language'] == "") ? 'selected=selected>-- Select --</option>' : "value=\"" . $data['language'] . "\" \"selected=selected\""); 

一个更好的解决办法是:

if($data['language'] == "") 
{ 
    echo '<option selected=selected>-- Select --</option>'; 
}else 
{ 
    echo '<option selected=selected value="' . $data['language'] . '">-- Select --</option>'; 
} 

echo "<option ". ($data['language'] == "" ? "selected=selected>-- Select --</option>" : "value='".$data['language'] . "' selected=selected");