错误只应通过引用传递变量

时间:2015-07-09 04:09:12

标签: php

我收到的错误是我前一段时间没有看过的。不确定php版本是否因此而改变。对于PHP来说,我是非常基础的,所以任何见解都会很棒。基本上我只是从文件夹中获取一些文件,添加文件的图像(如果没有使用库存图像),然后列出它们的文件。

`

if(!in_array(end(explode(".",$file)),$allowed_extensions)){

错误在此行显示Strict Standards: Only variables should be passed by reference

错误:{{1}}

2 个答案:

答案 0 :(得分:1)

这意味着你的end()函数返回一个表的引用(函数爆炸的结果),触发php手册。

此处有更多信息:http://www.php.net/manual/en/language.references.return.php

一个简单的解决方法是将它放在一个变量中,然后在循环中使用它:

$x = end(explode(".",$file));
if(!in_array($x,$allowed_extensions)){
        $image = "http://fitter.henry-griffitts.com/fitter/images/pdf.png";
    }else{
        $image = $file;
    }

答案 1 :(得分:0)

试试此代码

问题是,该结果需要引用,因为它修改了数组的内部表示(即它使当前元素指针指向最后一个元素)。

爆炸('。',$ file_name)的结果无法转换为引用。这是PHP语言中的限制,可能出于简单原因而存在。

foreach($files as $file){

  $exploded_file = explode(".",$file);

  if(!in_array(end($exploded_file),$allowed_extensions)){
    $image = "http://fitter.henry-griffitts.com/fitter/images/pdf.png";
  }else{
    $image = $file;
  }

}