if语句何时回显html

时间:2015-09-15 15:16:16

标签: php html

所以我试图用循环生成选择值。这里的问题是我不能使用if语句。我可以将一些字符串与一些if语句一起设置,但这似乎是一个奇怪的解决方案。

<select name="test">
              <option disabled selected> -- Select an industry -- </option>
              <?php 
                $numberOfIndustries = count($industryOptions); //industryOptions is an array
                for($i = 0; $i <= $numberOfIndustries; $i++) {
                  echo "<option" . if (isset($_POST['test']) == true && $_POST['test'] == $industryOptions[$i]) { .  "selected='true'" . }; . "value=" . $industryOptions[$i] . ">" . $industryOptions[$i] . "</option>";
                }
              ?> 
</select>

2 个答案:

答案 0 :(得分:1)

您无法使用.(点)连接IF子句 - 仅限字符串。相反,您可以使用ternary operator

因此,您的echo来电应如下所示:

echo "<option " . 
     (isset($_POST['test']) && ($_POST['test'] == $industryOptions[$i]) ? "selected='true' " : ""). 
     "value=" . $industryOptions[$i] . ">" . $industryOptions[$i] . "</option>";

答案 1 :(得分:1)

只需单独回声,而不是创建一个无法阅读的巨大陈述。

<?php 
    $numberOfIndustries = count($industryOptions); //industryOptions is an array
    for($i = 0; $i <= $numberOfIndustries; $i++) {
        echo "<option";
        if (isset($_POST['test']) == true && $_POST['test'] == $industryOptions[$i]) {
            echo " selected='true'";
        }
        echo " value=" . $industryOptions[$i] . ">" . $industryOptions[$i] . "</option>";
    }
?>

但是,如果你真的想要使用一行语句,那就有一个名为conditional ternary operator的东西可以让你做你想做的事。

<?php 
    $numberOfIndustries = count($industryOptions); //industryOptions is an array
    for($i = 0; $i <= $numberOfIndustries; $i++) {
        echo "<option" . ((isset($_POST['test']) == true && $_POST['test'] == $industryOptions[$i]) ? "selected='true'" : "") . "value=" . $industryOptions[$i] . ">" . $industryOptions[$i] . "</option>";
    }
?>