PHP 错误调用未定义的函数,如何给方法数据使用

PHP Error Call to undefined function, how to give a method data to use

我正在构建一个脚本,它从 /uploads 文件夹中获取每个 xls 文件并将其转换为 CSV。

但是,我遇到了这个错误:

Fatal error:
Uncaught Error: Call to undefined function convertXLStoCSV() in C:\xampp\htdocs\Technocripa-php\scandir.php:46 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Technocripa-php\scandir.php on line 46

代码如下:

$dir = "uploads/*";
foreach(glob($dir) as $file)
{
    if(!is_dir($file)) { echo basename($file)."\n";}
    //--------------------------

    $nameAsString = (string)$file;

    require_once('Classes/PHPExcel.php');

    $inputfilename = $nameAsString;
    $outputfilename = 'convert.csv';

    //Usage:
    convertXLStoCSV($inputfilename, $outputfilename);

    function convertXLStoCSV($infile, $outfile)
    {
        $fileType = PHPExcel_IOFactory::identify($infile);
        $objReader = PHPExcel_IOFactory::createReader($fileType);

        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load($infile);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
        $objWriter->save($outfile);
    }
}

我认为错误是由于错误的变量使用引起的,但我真的找不到解决这个问题的方法。我只想将 te 文件的名称存储在 uploads/ 文件夹中的一个变量中,并在我的脚本中使用它。

这是没有 LOOP 的程序,它运行没有任何错误。或许有助于更好地理解。

require_once('Classes/PHPExcel.php');

  $inputfilename = 'test2.xls';
  $outputfilename = 'convert.csv';

  //Usage:
  convertXLStoCSV($inputfilename, $outputfilename);

  function convertXLStoCSV($infile, $outfile)
  {
      $fileType = PHPExcel_IOFactory::identify($infile);
      $objReader = PHPExcel_IOFactory::createReader($fileType);

      $objReader->setReadDataOnly(true);
      $objPHPExcel = $objReader->load($infile);

      $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
      $objWriter->save($outfile);
  }
    function convertXLStoCSV($infile, $outfile)
    {
        $fileType = PHPExcel_IOFactory::identify($infile);
        $objReader = PHPExcel_IOFactory::createReader($fileType);

        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load($infile);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
        $objWriter->save($outfile);
    }

convertXLStoCSV($inputfilename, $outputfilename);

在使用之前声明函数

foreach 外部创建函数并在内部调用它,如下所示:

function convertXLStoCSV($infile, $outfile)
{
    $fileType = PHPExcel_IOFactory::identify($infile);
    $objReader = PHPExcel_IOFactory::createReader($fileType);

    $objReader->setReadDataOnly(true);
    $objPHPExcel = $objReader->load($infile);

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
    $objWriter->save($outfile);
}

$dir = "uploads/*";
foreach(glob($dir) as $file)
{
    if(!is_dir($file)) { echo basename($file)."\n";}
    //--------------------------

    $nameAsString = (string)$file;

    require_once('Classes/PHPExcel.php');

    $inputfilename = $nameAsString;
    $outputfilename = 'convert.csv';

    //Usage:
    convertXLStoCSV($inputfilename, $outputfilename);


}