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

Laravel Blade中isset函数触发报错问题求助

解决Laravel Blade中isset()函数报错的问题

这个问题我之前踩过坑!核心原因是你直接对$returns['Passive']使用isset()时,可能$returns变量本身就没有被定义,或者它不是一个数组/可访问的对象,这时候PHP会抛出类似“Undefined variable: returns”或者“Trying to access array offset on null”的错误——毕竟你总不能对一个不存在的变量去取数组键对吧?

下面给你几个实用的解决方案,按推荐程度排序:

1. 使用Blade原生的@isset指令(最推荐)

Laravel Blade专门提供了@isset指令,它会自动先检查变量是否存在,再检查对应的键/属性是否存在,完美避开PHP原生isset()的坑:

@isset($returns['Passive'])
    <ul class="list-group">
        <li class="list-group-item"><span>Passive Income</span>
            <ul class="list-group">
                <li class="list-group-item"><span>Passive: {{ $returns['Passive'] }}</span></li>
            </ul>
        </li>
    </ul>
@endisset

2. 分层检查变量与数组键

如果你更习惯用@if,可以先确认$returns存在且是数组,再判断键是否存在:

@if(isset($returns) && is_array($returns) && isset($returns['Passive']))
    <ul class="list-group">
        <li class="list-group-item"><span>Passive Income</span>
            <ul class="list-group">
                <li class="list-group-item"><span>Passive: {{ $returns['Passive'] }}</span></li>
            </ul>
        </li>
    </ul>
@endif

3. 使用Laravel的data_get辅助函数

这个函数可以安全地从数组/对象中获取值,不存在则返回默认值(默认是null),非常适合模板场景:

@if(data_get($returns, 'Passive') !== null)
    <ul class="list-group">
        <li class="list-group-item"><span>Passive Income</span>
            <ul class="list-group">
                <li class="list-group-item"><span>Passive: {{ data_get($returns, 'Passive') }}</span></li>
            </ul>
        </li>
    </ul>
@endif

如果怕重复写data_get,也可以先用@php赋值:

@php
    $passiveIncome = data_get($returns, 'Passive');
@endphp
@if($passiveIncome !== null)
    <!-- 你的HTML内容 -->
@endif

4. 结合PHP Null合并运算符(PHP 7+)

如果你的PHP版本在7.0以上,可以用??运算符简化判断,但要注意先确保$returns存在:

@if(($returns ?? [])['Passive'] ?? null)
    <ul class="list-group">
        <li class="list-group-item"><span>Passive Income</span>
            <ul class="list-group">
                <li class="list-group-item"><span>Passive: {{ ($returns ?? [])['Passive'] }}</span></li>
            </ul>
        </li>
    </ul>
@endif

简单来说,($returns ?? [])会在$returns不存在时返回空数组,再对空数组取['Passive']时用?? null兜底,避免报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:53:29