Php fputcsv():提供的资源不是有效的流资源

Php fputcsv():提供的资源不是有效的流资源,php,arrays,string,csv,fputcsv,Php,Arrays,String,Csv,Fputcsv,我有以下代码 我正在尝试使用以下代码生成csv,但它给了我错误: fputcsv():提供的资源不是有效的流资源 // CSV column headings $csv = Array ( "Card #, Value of Card, Current balance, Amount used, Transaction #, Transaction Date, Ship To Name, Ship To A

我有以下代码

我正在尝试使用以下代码生成csv,但它给了我错误:

fputcsv():提供的资源不是有效的流资源

// CSV column headings
$csv = Array
(
    "Card #, 
     Value of Card, 
     Current balance, 
     Amount used, 
     Transaction #,
     Transaction Date, 
     Ship To Name, 
     Ship To Address 1, 
     Ship To Address 2,
     Ship To Address 3, 
     Customer Telephone");

$csv [] = "2831013003939663, 
           0, 
           $1223.71, 
           $155.69,
           NULL,
           02-04-19_05:49:06,
           Demo demo,
           NULL,
           NULL,
           NULL,
           8108749624";


    $file = fopen("contacts.csv","w");
    foreach ($csv as $line)
      {
        fputcsv($file,explode(',',$line));
      }
    fclose($file);
我以以下方式获得调试中的输出:

**

**

我不明白上面的代码出了什么问题

试着这样做:

$arr=array("Card #,Value of Card,Current balance,Amount used,Transaction #,Transaction Date,Ship To Name,Ship To Address 1,Ship To Address 2,Ship To Address 3, Customer Telephone",
       "2831013003939663,0,$1259.64,$119.76,NULL,02-04-19_05:49:06,Demo demo,NULL,NULL, NULL,8108749624");


$filename = "contacts.csv";
$handle = fopen($filename, 'w+');

foreach($arr as $row) {
     $exploded_row=explode(',',$row);
     fputcsv($handle,$exploded_row);
}
fclose($handle);

另一个注意事项是,当您循环以将数据放入CSV中,并在循环中执行
fclose()
,而不是在最后执行时,可能会发生这种情况

例如:


$handle=fopen($filename'w+);
foreach(…){
//在循环中做点什么
//将数据放入csv
fputcsv($handle,$data);
fclose($handle);
}
现在,在本例中,第二次迭代将没有$handle流,因为它在第一次迭代结束时已经关闭

应该是这样的:


$handle=fopen($filename'w+);
foreach(…){
//在循环中做点什么
//将数据放入csv
fputcsv($handle,$data);
}
//完成此CSV上的所有操作后关闭
fclose($handle);

您是否检查了对
fopen
的调用是否成功?是。。它给了我调试“资源id#1687”和文件“contacts.csv”中的值,该文件创建于位置correctlyNo,它对我不起作用。请检查我已经用调试输出更新了我的问题,它对我有用。。一切都是正确的。。。我的代码中唯一的错误是以正确的方式形成数组。。。从你的回答中可以看出。。。我剩下的代码和以前一样。请给你的答案添加一些解释,以便其他人可以从中学习
$arr=array("Card #,Value of Card,Current balance,Amount used,Transaction #,Transaction Date,Ship To Name,Ship To Address 1,Ship To Address 2,Ship To Address 3, Customer Telephone",
       "2831013003939663,0,$1259.64,$119.76,NULL,02-04-19_05:49:06,Demo demo,NULL,NULL, NULL,8108749624");


$filename = "contacts.csv";
$handle = fopen($filename, 'w+');

foreach($arr as $row) {
     $exploded_row=explode(',',$row);
     fputcsv($handle,$exploded_row);
}
fclose($handle);