Laravel控制器更新用户时报错Call to undefined function array_except()问询
错误原因
array_except是Laravel提供的数组辅助函数,该错误出现的核心原因如下:
- Laravel从6.0版本开始将所有全局字符串、数组辅助函数从核心框架中剥离,移入独立的
laravel/helpers扩展包,默认不再预装。如果当前项目运行的Laravel版本≥6.0且未安装该扩展,就会出现函数未定义的报错。 - 其他项目相同代码可正常运行,要么对应项目的Laravel版本低于6.0,要么已经提前安装了
laravel/helpers扩展包。 - 小概率场景为已安装扩展,但未正确引入全局函数命名空间,导致程序优先在当前控制器的
App\Http\Controllers命名空间下查找对应函数。
解决方法
以下三种方案均可解决问题,可根据实际需求选择:
- 方案1:安装独立辅助函数扩展
在项目根目录下执行Composer命令即可完成安装,无需修改原有业务代码:composer require laravel/helpers - 方案2:使用Arr门面替代全局函数
无需安装额外扩展,首先在控制器顶部引入Arr类:use Illuminate\Support\Arr;
再将原代码中的array_except($input,array('password'))替换为:Arr::except($input, ['password']) - 方案3:使用PHP原生方法实现同等逻辑
直接改写else分支代码,用原生unset方法删除password字段,效果完全一致:else { unset($input['password']); }
内容的提问来源于stack exchange,提问作者Old Ceylon Mudliar
相关产品推荐
相关产品推荐

