PHP Echo bug或拼写错误

时间:2012-01-16 22:08:46

标签: php html echo

所以我有这句话:

echo '<option value="random" ' . 
      ($lol_settings->gallery_effect == "random") ? 'selected=selected' :
      false.'>Random</option>';

但是在输出上我得到了这样的东西:

<select>
   selected=selected
   <option value="foo">foo</option>
</select>

为什么我会这样?我的拼写错误/错误在哪里?也许你们可以看到它?

谢谢。

4 个答案:

答案 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>'
    ;

Codepad of the differences

您的陈述目前正在发生的事情相当于:

$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>';

连接起来

因此,它是?:

的“其他”部分中的字符串的一部分