如何获取datalist选中项对应关联数组值并打印课程描述
问题原因
你当前的代码未对用户选中值做匹配判断,foreach会遍历关联数组的所有键值对,所以会输出全部课程内容。关联数组支持直接通过键名访问对应值,无需遍历即可快速拿到选中课程的描述。
修复方案
替换原PHP代码段即可,修改后完整代码如下:
<label for="course">Choose a course:</label> <input list="courseOptions" id="course" name="course"> <datalist id="courseOptions"> <option value="COMP1230"> <option value="COMP2129"> <option value="COMP2147"> <option value="COMP2130"> <option value="COMP2138"> <option value="GSSC1054"> </datalist> <?php $courseList = [ "COMP1230" => "Advanced Web Development", "COMP2129" => "Advanced Object-Oriented Programming", "COMP2147" => "System Analysis, Design & Testing", "COMP2130" => "Application Development Using Java", "COMP2138" => "Advanced Database Development", "GSSC1054" => "Forensic Psychology" ]; // 接收表单提交的选中课程编码,兼容GET/POST提交 $selectedCode = isset($_REQUEST['course']) ? trim($_REQUEST['course']) : ''; // 合法性校验后输出内容 if (!empty($selectedCode) && isset($courseList[$selectedCode])) { echo "<div> Course Name: {$courseList[$selectedCode]} </div>"; } ?>
可选的foreach实现(不推荐,性能低于直接键访问)
如果你一定要用foreach实现,只需要在循环中增加匹配判断,匹配到后直接跳出循环即可:
foreach($courseList as $code => $name){ if ($code === $selectedCode) { echo "<div> Course Name: $name </div>"; break; } }
内容的提问来源于stack exchange,提问作者qlows
相关产品推荐
相关产品推荐

