无法通过三元运算符获取下拉框中房产状态数据问题排查
问题分析与解决
你的代码核心问题是判断逻辑与选项值不匹配:
- 你用
== '1'和== '0'做选中判断,但对应选项的value属性是"Ativo"和"Inativo",两者完全不相等,自然无法选中预期选项。 - 同时需要确认
$imo_status或set_value('imo_status')的实际返回值类型(数字1/0 还是字符串"Ativo"/"Inativo"),这决定了最终的修正方向。
修正方案(两种对应场景)
场景1:后端返回状态值为数字1/0
如果变量返回的是1或0,需将选项的value改为对应数字,保持判断逻辑不变:
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12"> <div class="form-group"> <label for="imo_status">STATUS DO IMÓVEL</label> <div class="form-line"> <select class="form-control" id="imo_status" name="imo_status"> <option value="">Selecione o Status</option> <option <?= (isset($imo_status) ? $imo_status : set_value('imo_status')) == '1' ? 'selected' : '' ?> value="1">Ativo</option> <option <?= (isset($imo_status) ? $imo_status : set_value('imo_status')) == '0' ? 'selected' : '' ?> value="0">Inativo</option> </select> </div> </div> </div>
场景2:后端返回状态值为字符串"Ativo"/"Inativo"
如果变量返回的是状态名称字符串,需修改判断条件与选项值保持一致:
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12"> <div class="form-group"> <label for="imo_status">STATUS DO IMÓVEL</label> <div class="form-line"> <select class="form-control" id="imo_status" name="imo_status"> <option value="">Selecione o Status</option> <option <?= (isset($imo_status) ? $imo_status : set_value('imo_status')) == 'Ativo' ? 'selected' : '' ?> value="Ativo">Ativo</option> <option <?= (isset($imo_status) ? $imo_status : set_value('imo_status')) == 'Inativo' ? 'selected' : '' ?> value="Inativo">Inativo</option> </select> </div> </div> </div>
快速排查技巧
可以先通过var_dump(isset($imo_status) ? $imo_status : set_value('imo_status'));输出变量的实际值,确认它的类型和内容,再针对性调整判断逻辑,能更快定位问题。
内容的提问来源于stack exchange,提问作者Mike Otharan
相关产品推荐
相关产品推荐

