我想用最后一个字并使用end()函数我得到一个错误

时间:2016-04-08 13:56:51

标签: php

$allowed=array('jpg','jpqg','gif','png','JPG','JPEG','GIF','PNG');

$file_name=$_FILES['profile']['name'];
$file_extn= end(explode('.',$file_name));
$file_temp=$_FILES['profile']['tmp_name'];

if(in_array($file_extn,$allowed) == true) {
    //change_profile_image($_SESSION['id'],$file_temp);
}
else {
    echo'incorrect file type .Allowed:';
    echo implode(', ',$allowed);
}

错误是:

  

严格的标准:只有变量应该通过

中的引用传递

当我使用结束函数时会出现此错误

2 个答案:

答案 0 :(得分:2)

要使用如下所示的文件扩展名:

$ext = pathinfo($file_name, PATHINFO_EXTENSION);

答案 1 :(得分:1)

警告信息说明了一切。在使用end

之前,必须将爆炸结果存储在变量中

例如:

$pieces = explode('.',$file_name);
$file_extn= end($pieces);

〜编辑:

end函数将参数作为引用。这意味着函数使用内存地址而不是值。这就是为什么我们必须将explode的回报存储在一个变量中。

您可以在此链接中详细了解通过引用传递:http://php.net/manual/en/language.references.pass.php

以下是end doc:http://php.net/manual/en/function.end.php