PHP生成日期类HTML下拉列表如何仅添加一次selected选中属性
问题原因
你的代码逻辑没有区分当前正在生成的是年、月、日哪一类下拉列表,所有下拉的判断条件都同时匹配了当前年、当前月、当前日三个值。比如当月是2、当日也是2时,生成月下拉时2会匹配到当前日的2,生成日下拉时2会匹配到当前月的2,自然会出现多个带selected属性的选项。
修复方案
给每类下拉增加类型标识,判断时仅匹配对应类型的当前时间值即可,同时可以删掉option后多余的<br>标签,该标签对下拉选项排版无意义。
修复后的代码示例:
// 生成对应下拉前先指定类型:年为year、月为month、日为day $listType = 'month'; // 仅获取对应类型的当前值 $targetSelected = match($listType) { 'year' => date('Y'), 'month' => date('m'), 'day' => date('d'), default => '' }; while ($start <= $end) { $selectedAttr = $start == $targetSelected ? 'selected' : ''; echo "<option {$selectedAttr} value='{$name}'>{$start}</option>"; $start++; } echo "</select>";
如果你的PHP版本低于8.0不支持match语法,可以换成if判断赋值:
$listType = 'day'; if ($listType == 'year') { $targetSelected = date('Y'); } elseif ($listType == 'month') { $targetSelected = date('m'); } elseif ($listType == 'day') { $targetSelected = date('d'); } else { $targetSelected = ''; }
内容的提问来源于stack exchange,提问作者mrmiaki
相关产品推荐
相关产品推荐

