PHP结合HTML开放标签使用switch设置下拉选中项的语法问题
问题分析与解决方案
你这种switch写法在PHP里不可行,会触发语法错误,核心问题和修正方案如下:
错误原因
- switch替代语法结构混乱:PHP的switch替代语法(
switch(expr): ... endswitch;)要求switch()和endswitch;之间必须是合法的case/default语句块,你把case直接插入HTML标签的属性中,破坏了语法结构,PHP解析器无法识别。 - 类型不匹配:
$_GET['rows']是字符串类型(URL参数均为字符串),你用case 10这种数字类型匹配,虽然PHP会做弱类型转换,但严谨性不足,容易出现意料外的匹配。 - 笔误:第三个option的
case 29对应value为20,明显是输入错误,会导致该选项永远无法被选中。
修正方案
方案1:用三元运算符(简洁推荐)
直接判断当前值与option的value是否匹配,写法清晰且无语法问题:
<?php // 先获取当前选中值,默认设为10 $currentRows = isset($_GET['rows']) ? (int)$_GET['rows'] : 10; ?> <select name="rows" onchange="$('#paginacao').submit()"> <option value="10" <?= $currentRows === 10 ? 'selected' : '' ?>>10</option> <option value="15" <?= $currentRows === 15 ? 'selected' : '' ?>>15</option> <option value="20" <?= $currentRows === 20 ? 'selected' : '' ?>>20</option> <option value="100" <?= $currentRows === 100 ? 'selected' : '' ?>>100</option> </select>
方案2:修正switch语法(如果坚持用switch)
调整switch的结构,让case对应完整的option输出逻辑:
<?php $currentRows = isset($_GET['rows']) ? (int)$_GET['rows'] : 10; ?> <select name="rows" onchange="$('#paginacao').submit()"> <?php switch($currentRows): ?> <?php case 10: ?> <option value="10" selected>10</option> <option value="15">15</option> <option value="20">20</option> <option value="100">100</option> <?php break; ?> <?php case 15: ?> <option value="10">10</option> <option value="15" selected>15</option> <option value="20">20</option> <option value="100">100</option> <?php break; ?> <?php case 20: ?> <option value="10">10</option> <option value="15">15</option> <option value="20" selected>20</option> <option value="100">100</option> <?php break; ?> <?php case 100: ?> <option value="10">10</option> <option value="15">15</option> <option value="20">20</option> <option value="100" selected>100</option> <?php break; ?> <?php default: ?> <option value="10" selected>10</option> <option value="15">15</option> <option value="20">20</option> <option value="100">100</option> <?php endswitch; ?> </select>
不过这种写法冗余度高,不如三元运算符高效。
内容的提问来源于stack exchange,提问作者kakaroto codes
相关产品推荐
相关产品推荐

