Laravel Blade中include传参后explode分割报错Undefined offset:1如何解决
报错原因
你触发Undefined offset: 1报错的直接原因是:explode('@', $key)执行后返回的数组只有1个元素,不存在下标为1的值,访问不存在的数组下标就会抛出该异常。
触发问题的根源是你传参时的写法错误:你在父模板里传的key值是加了单引号的字符串'emails[0]',这个字符串本身不包含@符号,拆分后自然无法拿到第二个元素。如果你本意是要传递emails数组第0位的真实邮箱值,现在的写法相当于直接传了固定字符串,没有读取变量内容。
解决方法
1. 修正传参写法(必改)
把父模板里的传参代码中单引号去掉,直接传变量值:
@include('components.protected-email', ['key' => $emails[0]])
只要$emails[0]是合法的带@的邮箱地址,拆分逻辑就可以正常运行。
2. 增加容错处理(可选,优化稳定性)
可以在子模板里对拆分逻辑做兼容性处理,避免因为传入不合法的邮箱值再次抛出报错:
@php $split = explode('@', $key ?? ''); $first = $split[0] ?? ''; $second = $split[1] ?? ''; @endphp <a href="" data-first="{{ $first }}" data-second="{{ $second }}" class="js-combaine-email"></a>
内容的提问来源于stack exchange,提问作者chu
相关产品推荐
相关产品推荐

