我在PHP中有以下if语句:
<?php
for ($i = 1; $i <= 10; $i++) {
echo "<option " . $carDoors == $i ? "selected = 'selected'" : "" . " >" . $i ."</option>";
}
?>
我需要选择列表基于$carDoors
的值,如果是这样的话,我想回复selected = 'selected'
。目前,我一直在获得一个完全空的选择框。我做错了什么?
答案 0 :(得分:2)
您的代码的问题是,三元运算符?:
的优先级高于连接运算符.
。因此,您的代码评估为:
if ($carDoors == $i) {
echo "<option selected = 'selected'";
} else {
echo "<option >" . $i ."</option>";
}
要获得所需的输出,您应该使用短信围绕if:
echo "<option " . ($carDoors == $i ? "selected = 'selected'" : "") . " >" . $i ."</option>";
可以找到运营商优先级列表in the official PHP documentation。
答案 1 :(得分:1)
您可以通过这种方式使用?
:
<?php
for ($i = 1; $i <= 10; $i++) {
$selected = $carDoors == $i ? "selected = 'selected'" : "";
echo "<option " . $selected . " >" . $i ."</option>";
}
?>
或简单地将其插入():
for ($i = 1; $i <= 10; $i++) {
echo "<option " . ($carDoors == $i ? "selected = 'selected'" : "") . " >" . $i ."</option>";
}