我正在尝试将我的 PHP 和 HTML 分开。我将一组 PHP 变量传递给我的 HTML 代码。我正在创建一个选择下拉列表并尝试根据我的变量选择一个特定选项。像这样:
//example vars from PHP array (uses magic getter and accessed by $this->varName)
//$array = array('aaa' => '123', 'bbb' => '456', 'ccc' => '789');
//$selected = 'bbb';
<select name="name" id="id">
<option value="0">Choose n Option</option>
<?
foreach($this->array as $key => $value)
{
?>
//$selected may not be set
<option value="<?=$key?>" <? echo isset($this->selected) ? (strcmp($key,$this->selected)==0 ? 'selected' : '') : '' ?> ><?=$value?></option>
<?
}
?>
</select>
结果是:
<select name="name" id="id">
<option value="0">Choose an Option</option>
<option value="aaa" >123</option>
<option value="bbb" selected >456</option> //'selected' determined by code above
<option value="ccc" >789</option>
</select>
有没有更好的方式写应该选择哪个选项?使用 PHP 还是更改我的逻辑?<? echo isset($this->selected) ? (strcmp($key,$this->selected)==0 ? 'selected' : '') : '' ?>
似乎不太可读。我想知道在 HTML/view 代码需要使用嵌套循环和 if 的情况下是否有更好的方法来编写代码,尤其是在这种情况下的 HTML 标记内。
我想把结果<? echo isset($this->selected) ? (strcmp($key,$this->selected)==0 ? 'selected' : '') : '' ?>
放入一个变量中,然后我就可以了
$newSelectVar = <? echo isset($this->selected) ? (strcmp($key,$this->selected)==0 ? 'selected' : '') : '' ?>;
<option value="<?=$key?>" <?=$newSelectVar?> ><?=$value?></option>
我不想这样做,因为我试图只使用内联 PHP(我读到这使得 HTML 更具可读性和可维护性),但我想我已经用foreach
.