所以我试图用循环生成选择值。这里的问题是我不能使用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>
答案 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>";
}
?>