如何在PHP中根据服务器值显示选中的星期几选项
问题分析与修复方案
你的代码核心问题在于数组结构和遍历方式不匹配:
- 定义的
$daysOfWeek是「星期名称为键、数字为值」的关联数组,但你在foreach循环里只获取了值,还错误地尝试以关联数组的方式访问$dataDay['numberDay']和$dataDay['day'],这会导致代码无法正确匹配选中状态。
修正后的代码
PHP数组定义(无需修改,保持原结构即可)
$daysOfWeek = array( "Lunedì" => 1, "Martedì" => 2, "Mercoledì" => 3, "Giovedì" => 4, "Venerdì" => 5, "Sabato" => 6, "Domenica" => 7, );
HTML中的PHP循环部分(关键修改)
<select name="day" class="form-select"> <?php // 遍历数组的键(星期名称)和值(数字) foreach ($daysOfWeek as $dayName => $dayNumber) { echo "<option"; // 对比服务器返回的$day和当前循环的数字值 if ($dayNumber == $day) { echo ' selected="selected"'; } echo " value='" . $dayNumber . "'>" . $dayName . "</option>"; } ?> </select>
修改说明
- 使用
foreach ($daysOfWeek as $dayName => $dayNumber)同时获取数组的键(星期名称)和值(对应数字),避免原代码中只拿到值的问题。 - 直接用
$dayNumber和服务器返回的$day做相等判断,匹配成功则添加selected属性。 - 输出option时,
value设为数字,显示文本为对应的意大利语星期名称,确保和原数组结构对应。
内容的提问来源于stack exchange,提问作者joisberg
相关产品推荐
相关产品推荐

