如何为下面保存的选项数组设置selected =“selected”。谢谢!
e.g
<option value="Facebook">Facebook</option>
<option value="Twitter" selected="selected">Twitter</option>
<select name="'. $id .'['.$order.'][url]" id="'. $id .'['.$order.'][url]">
$socialicons = array ('facebook' => 'Facebook', 'twitter' => 'Twitter');
foreach ($socialicons as $socialicon) {
<option value="'.$socialicon.'" />'.$socialicon.'</option>
}
</select>
答案 0 :(得分:0)
我认为,您将在$_POST[$id][$order]['url']
的POST数组中获得已发送的值。然后,只需将发送的值与循环中的当前值进行比较:
foreach ($socialicons as $socialicon) {
$selected = '';
if ($socialicon == $_POST[$id][$order]['url']) {
$selected = 'selected="selected"';
echo '<option value="'.$socialicon.'" '.$selected.' />'.$socialicon.'</option>';
}
我对$_POST
数组并不完全确定,因此您可能需要调整它或搜索多维$_POST
的访问方式。
如果您将选择内容保存在其他位置,例如在数据库中,您可以将其与来自那里的值进行比较。
答案 1 :(得分:0)
您可以使用多维数组来实现此目的:
$socialicons = array(
array("name" => "Facebook", "selected" => false),
array("name" => "Twitter", "selected" => true)
);
foreach($socialicons as $site) {
$selected_text = ($site['selected']) ? "selected='selected'" : "";
echo "<option $selected_text>". $site['name'] ."</option>";
}
上面的代码使用三元运算符创建一个合适的selected='selected'
- 文本。未经测试的代码应该可行 - 但仍会给您一些想法。