【问题标题】:fclose() expects parameter 1 to be resourcefclose() 期望参数 1 是资源
【发布时间】:2016-11-30 10:11:59
【问题描述】:

我对创建一些 csv 文件的 PHP 脚本有疑问。 PHP 脚本如下:

<?php

    $inputFile = "/var/www/vhosts/pecso.it/httpdocs/test/export30gg.txt";

    $csvData = file_get_contents($inputFile);

    $rows = explode(PHP_EOL, $csvData);

    $rowsArray = array();
    foreach ($rows as $row) {
        $rowsArray[] = str_getcsv($row);
    }

    $csvFileName = "/var/www/vhosts/pecso.it/httpdocs/graphs/export30gg.csv";

    if (file_exists($csvFileName)){
        unlink($csvFileName);
    }

    $csvFile = fopen($csvFileName, "w");
    $csvFileForGraph = fopen($csvFileNameForGraph, "w");    

    for ($i = 0; $i < count($rowsArray); $i++) {
        $dateTime = DateTime::createFromFormat('d/m/Y', $rowsArray[$i][0]);
        $d = $dateTime->format('Y-m-d');
        $rowsArray[$i][0] = $d;
        $rowForGraph = $rowsArray[$i];
        unset($rowForGraph[1]);
        $row = implode(',',$rowsArray[$i]);
        $rowForGraph = implode(',',$rowForGraph);
        file_put_contents($csvFileName, $row.PHP_EOL , FILE_APPEND);
    }

    fclose($csvFileName);
?>

此脚本工作正常,并且 csv 文件 export30gg.csv 已正确创建,但每次运行此脚本时,都会出现以下错误:

fclose() expects parameter 1 to be resource

你能帮帮我吗?

【问题讨论】:

  • 资源是$csvFile$csvFileName 是一个字符串

标签: php fopen fclose


【解决方案1】:

flose() 接受参数作为文件指针资源,将在代码执行时找到,例如在您的情况下是 $csvFile = fopen($csvFileName, "w"); 所以,应该是

fclose($csvFile); 

而不是 fclose($csvFileName);

【讨论】:

    【解决方案2】:

    应该是这样的

    fclose($csvFile);
    

    因为您将资源链接存储在 $csvFile 中,而不是 $csvFileName 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多