Laravel 5.5出现A non-numeric value encountered错误,求助排查解决
问题分析与解决方案
错误原因
你遇到的A non-numeric value encountered错误,根源很明确:你用了加号(+)来拼接字符串——在PHP里,加号是专门做数值加法运算的,不是字符串拼接工具!当你试图用+连接firstnames和lastname这两个字符串时,PHP会强制尝试把它们转换成数值,而普通字符串转数值大概率会得到无效结果,这就直接触发了这个非数值类型错误。另外提一句,你代码里的clas拼写错了,应该是class,这个小细节也记得修正~
解决方法
给你三种常用的正确字符串拼接方式,按需选择:
PHP标准点号(.)拼接
这是PHP最基础的字符串拼接写法,直接把加号换成点号就行:<span class="username">{{ auth()->user()->firstnames . ' ' . auth()->user()->lastname }}</span>双引号变量解析
如果你喜欢更简洁的写法,可以用双引号包裹内容,PHP会自动解析其中的变量:<span class="username">{{ "{$auth()->user()->firstnames} {$auth()->user()->lastname}" }}</span>Laravel字符串辅助函数
想更优雅的话,还可以用Laravel自带的字符串工具类:<span class="username">{{ Str::concat(auth()->user()->firstnames, ' ', auth()->user()->lastname) }}</span>或者链式调用写法:
<span class="username">{{ Str::of(auth()->user()->firstnames)->append(' ', auth()->user()->lastname) }}</span>(Laravel默认已经给
Str类做了别名,直接用就行,不需要额外引入)
额外建议
为了避免用户未设置姓名时出现异常输出,建议加上空值判断:
<span class="username">{{ auth()->user()->firstnames ?? '' }} {{ auth()->user()->lastname ?? '' }}</span>
这样就算某个字段为空,也只会显示空格或空字符串,不会触发新的错误。
内容的提问来源于stack exchange,提问作者user9085794
相关产品推荐
相关产品推荐

