所以我有这句话:
echo '<option value="random" ' .
($lol_settings->gallery_effect == "random") ? 'selected=selected' :
false.'>Random</option>';
但是在输出上我得到了这样的东西:
<select>
selected=selected
<option value="foo">foo</option>
</select>
为什么我会这样?我的拼写错误/错误在哪里?也许你们可以看到它?
谢谢。
答案 0 :(得分:4)
你需要将三元表达式(整个事物)括在括号中
echo '<option value="random" '.($lol_settings->gallery_effect == "random" ? 'selected=selected' : '').'>Random</option>';
或者用逗号分隔表达式(这是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;
答案 1 :(得分:1)
可以围绕三元或单引号括号....
试试这个
echo '<option value="random" '.($lol_settings->gallery_effect == "random" ? "selected=selected" : "false") .'>Random</option>';
答案 2 :(得分:1)
主要是你的问题是echo是一个不是正常函数的结构。你不能在echo语句中使用你的三元运算符。
试
$SelectedValue = ($lol_settings->gallery_effect == "random") ? 'selected=selected' : ' ';
echo '<option value="random" ' . $SelectedValue .'>Random</option>';
答案 3 :(得分:1)
您正在将false
与'>Random</option>';
因此,它是?: