You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9数组取值问题求助:下拉列表无法显示对应值

解决Laravel下拉列表从数组取值报错的问题

核心问题分析

你代码里的$mes数组存在严重的键重复问题——从第三个元素开始,所有键都是"3",PHP数组的键是唯一的,后面的元素会直接覆盖前面的,导致最终数组里只有"1"、"2"、"3"(对应Dezembro)三个有效键。当$cliente->mes的值是4-12时,访问$mes[$valormes]就会触发Undefined array key错误。

另外,手动写所有<option>标签不仅冗余,还容易出错,直接用print_r输出也不符合Blade模板的最佳实践。

修复后的完整代码

<i data-acorn-icon="category"></i>
<select class="form-control" id="mes" name="mes" data-placeholder="Mês">
    @php
        // 修正数组键为1-12,对应正确月份
        $mes = [
            "1" => "Janeiro",
            "2" => "Fevereiro",
            "3" => "Março",
            "4" => "Abril",
            "5" => "Maio",
            "6" => "Junho",
            "7" => "Julho",
            "8" => "Agosto",
            "9" => "Setembro",
            "10" => "Outubro",
            "11" => "Novembro",
            "12" => "Dezembro"
        ];
        $valormes = $cliente->mes;
    @endphp

    {{-- 用Blade循环遍历数组生成option,自动处理选中状态 --}}
    @foreach($mes as $key => $nome)
        <option value="{{ $key }}" {{ $key == $valormes ? 'selected' : '' }}>
            {{ $nome }}
        </option>
    @endforeach
</select>
</div>

关键改进点

  • 修正数组键:把每个月份对应的键改成1到12的唯一值,确保每个月份都能被正确访问。
  • Blade循环渲染:用@foreach遍历数组自动生成所有选项,避免手动写重复代码,同时通过{{ $key == $valormes ? 'selected' : '' }}自动判断并设置选中状态,不用单独写一个默认选中的option。
  • 安全输出:用Blade的{{ }}语法输出变量,自动转义HTML,比print_r更规范安全;如果担心$valormes无效,还可以用{{ $mes[$valormes] ?? 'Selecione um mês' }}做兜底处理。

内容的提问来源于stack exchange,提问作者Skinds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:05:33