PHP编辑页已关联分类checkbox默认选中仅单条生效怎么解决?
问题根因
- 你当前代码只拿单个
$crow变量和全部分类做匹配,没有遍历存储了用户所有已绑定分类的$crows数组,因此只能命中1条分类,其余已绑定分类无法匹配成功。 - 补充优化提醒:现有checkbox的
name属性设置为category,未加数组标识[],后续表单提交时服务端只会接收到最后一个选中的分类值,需要同步修正。
修复代码
建议先将已绑定分类的ID提取为一维数组,直接用in_array判断即可,执行效率更高,也能避免分类重名导致的匹配错误:
$rows = $util->get_all_categories(); $crows = $util->get_categories_by_user_id($id); // 预处理已绑定分类ID为一维数组 $bindedCategoryIds = array_column($crows, 'ID'); if($rows) { foreach ($rows as $row) { $checked = in_array($row['ID'], $bindedCategoryIds) ? 'checked' : ''; // name属性加[]支持提交多选中的分类值 echo '<label class="block"><input type="checkbox" name="category[]" '.$checked.' value="' . $row['ID'] . '"> ' . $row['name'] . '</label>'; echo '<br>'; } } ?>
内容的提问来源于stack exchange,提问作者Meshael Abdullah
相关产品推荐
相关产品推荐

