PHP上传图片出现Only variables should be passed by reference错误如何解决?
问题原因
这个报错是PHP的典型语法规范问题,array_pop() 函数的参数要求是变量引用,只能传入实际声明的变量,不能直接传入函数执行返回的临时值,你代码里直接把explode()的返回结果传给array_pop(),不符合参数要求,所以触发了Notice提示。
修复方案
你只需要把explode()的结果先赋值给一个临时变量,再用array_pop()处理即可,修改后的代码如下:
// 先把文件名分割结果赋值给变量 $file_name_arr = explode('.', $_FILES['slider_image']['name']); $ext = array_pop($file_name_arr);
可选简化写法
如果你不想额外声明临时变量,也可以用PHP自带的路径处理函数直接获取文件后缀,写法更简洁也不会触发报错:
$ext = pathinfo($_FILES['slider_image']['name'], PATHINFO_EXTENSION);
这种写法是官方更推荐的文件后缀获取方式,不需要自己分割字符串处理,兼容性更好。
内容的提问来源于stack exchange,提问作者Kyle White
相关产品推荐
相关产品推荐

