PHP实现两个下拉菜单的选择结果处理(无需JS)
纯PHP实现下拉菜单组合结果输出
当然可以不用JavaScript,纯靠PHP搞定这个需求!下面是具体的实现思路和代码示例:
1. 构建带表单的HTML页面
首先得把两个下拉菜单放在<form>标签里,指定提交方式为POST,这样PHP才能获取到用户选择的选项值。
<form method="POST" action=""> <div> <label for="start">起点:</label> <select name="start" class="form-control" id="start"> <option value="tank">Tank</option> <option value="armory">Armory</option> <option value="dept">Dept</option> <option value="comm">Comm</option> <option value="infirmary">Infirmary</option> <option value="depot">Depot</option> </select> </div> <div style="margin-top:10px;"> <label for="finish">终点:</label> <select name="finish" class="form-control" id="finish"> <option value="tank">Tank</option> <option value="armory">Armory</option> <option value="dept">Dept</option> <option value="comm">Comm</option> <option value="infirmary">Infirmary</option> <option value="depot">Depot</option> </select> </div> <button type="submit" style="margin-top:15px;">查看结果</button> </form>
2. PHP处理逻辑
推荐用关联数组存储每个选项组合对应的预定义结果,比写一堆if-else语句更清晰易维护。当表单提交后,先获取两个下拉菜单的值,再匹配对应的结果输出。
<?php // 预定义所有组合的结果,键为"起点-终点"的字符串 $results = [ 'tank-armory' => [ 'Tank' => 1, 'Infirmary' => 1, 'Dept Store' => 3, 'Command' => 1, 'Depot' => 2 ], // 你可以继续添加其他组合,比如: 'armory-tank' => [ 'Armory' => 2, 'Tank' => 4 // ...其他对应值 ] ]; // 检查表单是否提交 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $start = $_POST['start'] ?? ''; $finish = $_POST['finish'] ?? ''; $key = "$start-$finish"; // 检查当前组合是否有预定义结果 if (isset($results[$key])) { echo "<div style='margin-top:20px;padding:10px;border:1px solid #ccc;'>"; echo "<h3>计算结果:</h3>"; foreach ($results[$key] as $location => $count) { echo "<p>$location -> $count</p>"; } echo "</div>"; } else { echo "<p style='margin-top:20px;color:#dc3545;'>抱歉,当前选择的组合还没有对应的结果配置哦!</p>"; } } ?>
3. 完整整合代码
把HTML和PHP放在同一个文件里,就能直接运行了:
<?php $results = [ 'tank-armory' => [ 'Tank' => 1, 'Infirmary' => 1, 'Dept Store' => 3, 'Command' => 1, 'Depot' => 2 ], // 按需添加更多组合 ]; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $start = $_POST['start'] ?? ''; $finish = $_POST['finish'] ?? ''; $key = "$start-$finish"; if (isset($results[$key])) { echo "<div style='margin-top:20px;padding:10px;border:1px solid #ccc;'>"; echo "<h3>计算结果:</h3>"; foreach ($results[$key] as $location => $count) { echo "<p>$location -> $count</p>"; } echo "</div>"; } else { echo "<p style='margin-top:20px;color:#dc3545;'>抱歉,当前选择的组合还没有对应的结果配置哦!</p>"; } } ?> <!DOCTYPE html> <html> <head> <title>游戏辅助脚本</title> </head> <body> <form method="POST" action=""> <div> <label for="start">起点:</label> <select name="start" class="form-control" id="start"> <option value="tank">Tank</option> <option value="armory">Armory</option> <option value="dept">Dept</option> <option value="comm">Comm</option> <option value="infirmary">Infirmary</option> <option value="depot">Depot</option> </select> </div> <div style="margin-top:10px;"> <label for="finish">终点:</label> <select name="finish" class="form-control" id="finish"> <option value="tank">Tank</option> <option value="armory">Armory</option> <option value="dept">Dept</option> <option value="comm">Comm</option> <option value="infirmary">Infirmary</option> <option value="depot">Depot</option> </select> </div> <button type="submit" style="margin-top:15px;">查看结果</button> </form> </body> </html>
小提示
- 这种方式完全不需要JavaScript,所有逻辑都在服务器端通过PHP处理。
- 你只需要在
$results数组里不断添加新的起点-终点组合及其对应结果即可,扩展起来非常方便。 - 表单提交后页面会刷新并显示结果,符合纯PHP的运行逻辑。
内容的提问来源于stack exchange,提问作者morwi
相关产品推荐
相关产品推荐

