如果语句不在我的条件三元运算符中

时间:2018-01-16 14:37:32

标签: php loops for-loop select

我在PHP中有以下if语句:

<?php

    for ($i = 1; $i <= 10; $i++) {
        echo "<option " . $carDoors == $i ? "selected = 'selected'" : "" . " >" . $i ."</option>";
    } 

?>

我需要选择列表基于$carDoors的值,如果是这样的话,我想回复selected = 'selected'。目前,我一直在获得一个完全空的选择框。我做错了什么?

2 个答案:

答案 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>";
}