Php 上载文件显示错误通知:在中只能通过引用传递变量

Php 上载文件显示错误通知:在中只能通过引用传递变量,php,mysql,excel,Php,Mysql,Excel,我试图把它关闭这个错误我不明白为什么会发生,因为我上传的文件正确。。。现在正在上载文件,它向我显示了错误通知:在 <?php if(isset($_FILES['csv'])){ $errors= array(); $file_name = $_FILES['csv']['name']; $file_size = $_FILES['csv']['size']; $file_tmp = $_FILES['csv']['tmp_

我试图把它关闭这个错误我不明白为什么会发生,因为我上传的文件正确。。。现在正在上载文件,它向我显示了错误通知:在

      <?php
   if(isset($_FILES['csv'])){
      $errors= array();
      $file_name = $_FILES['csv']['name'];
      $file_size = $_FILES['csv']['size'];
      $file_tmp = $_FILES['csv']['tmp_name'];
      $file_type = $_FILES['csv']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));// error line

      $expensions= array("csv");

      if(in_array($file_ext,$expensions)=== false){
         $errors[]="extension not allowed, please choose a csv file.";
      }

      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }

      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>

      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "csv" />// If I change this to name this code does not works, 
         <input type = "submit"  value="Subir archivos"/>


      </form>

   </body>
</html>

//如果我将其改为名称,则此代码不起作用,
调用时,必须将数组作为变量传递,而不是函数的返回值。所以在

$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
您可以将
explode()
的返回赋值给变量,然后调用
end()

如果查看
end()
的文档,它会显示参数为
array&$array
&
显示它是通过引用传递的。

调用时,必须将数组作为变量传递,而不是函数的返回值。所以在

$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));
您可以将
explode()
的返回赋值给变量,然后调用
end()


如果您查看
end()
的文档,它显示参数为
数组和$array
&
显示它是通过引用传递的。

当您没有传入普通变量时,它会抱怨。它不喜欢传入函数

另外,您已经将
$\u文件['csv']['name']
指定为
$name
,因此只需使用
$name

把队伍分开:

$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));


当您没有传入普通变量时,它会发出抱怨。它不喜欢传入函数

另外,您已经将
$\u文件['csv']['name']
指定为
$name
,因此只需使用
$name

把队伍分开:

$file_ext=strtolower(end(explode('.',$_FILES['csv']['name'])));

更改此行:

$file_ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
为此:

$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
关于
,如果我将其更改为名称,则此代码不起作用,这是因为您还需要将
文件
superglobal上的数组索引更改为
name
,以访问数据

if (isset($_FILES['name'])) {
    $errors = [];
    $file_name = $_FILES['name']['name'];
    $file_size = $_FILES['name']['size'];
    // and so on...
}
更改此行:

$file_ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
为此:

$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
关于
,如果我将其更改为名称,则此代码不起作用,这是因为您还需要将
文件
superglobal上的数组索引更改为
name
,以访问数据

if (isset($_FILES['name'])) {
    $errors = [];
    $file_name = $_FILES['name']['name'];
    $file_size = $_FILES['name']['size'];
    // and so on...
}

结束-将数组的内部指针设置为其最后一个元素。 分为不同的变量。这应该行得通

$file_exploding =explode('.',$_FILES['csv']['name']);
$file_last_element = end($file_exploding);
$file_ext=strtolower($file_last_element);

结束-将数组的内部指针设置为其最后一个元素。 分为不同的变量。这应该行得通

$file_exploding =explode('.',$_FILES['csv']['name']);
$file_last_element = end($file_exploding);
$file_ext=strtolower($file_last_element);

你确定是这个代码引起了这个通知吗?没有行号/文件?它指的是哪一行代码?这是一个$file_ext=strtolower(end(explode('.',$_FILES['csv']['name']));你确定是这个代码引起了这个通知吗?没有行号/文件?它指的是哪一行代码?这是一个$file_ext=strtolower(end(explode('.',$_FILES['csv']['name']));