所以我有这行:
echo '<option value="random" ' .
($lol_settings->gallery_effect == "random") ? 'selected=selected' :
false.'>Random</option>';
但在输出上,我得到了这样的东西:
<select>
selected=selected
<option value="foo">foo</option>
</select>
为什么我会得到这个?我的打字错误/错误在哪里?也许你们能看到?
谢谢。
您需要将三元表达式(整个内容)包含在括号中
echo '<option value="random" '.($lol_settings->gallery_effect == "random" ? 'selected=selected' : '').'>Random</option>';
或者用逗号分隔表达式(wich是echo
的一个选项):
echo '<option value="random" ',
$lol_settings->gallery_effect == "random" ? 'selected=selected' : '',
'>Random</option>'
;
差异编码板
你的陈述目前的情况相当于:
$condition = '<option value="random" ' . ($lol_settings->gallery_effect == "random");
$t = 'selected=selected';
$f = false.'>Random</option>';
echo $condition ? $t : $f;
可以是三元或单引号周围的大括号。。。。
试试这个
echo '<option value="random" '.($lol_settings->gallery_effect == "random" ? "selected=selected" : "false") .'>Random</option>';
您的主要问题是echo是一个构造,而不是一个正常函数。您不能在echo语句中使用三元运算符。
尝试
$SelectedValue = ($lol_settings->gallery_effect == "random") ? 'selected=selected' : ' ';
echo '<option value="random" ' . $SelectedValue .'>Random</option>';
您正在连接false
和'>Random</option>';
因此,它是位于?:
"else"部分的字符串的一部分