Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将2D数组转换为CSV文件-字符串错误_Php_Arrays_Csv_Fputcsv - Fatal编程技术网

在PHP中将2D数组转换为CSV文件-字符串错误

在PHP中将2D数组转换为CSV文件-字符串错误,php,arrays,csv,fputcsv,Php,Arrays,Csv,Fputcsv,我正在尝试将2D数组导出到CSV文件中。这应该很简单。。。但我尝试了我能找到的每一个fputcsv示例,但没有任何效果。要么将整个阵列放入一行中。。。或者当我试图通过foreach循环插入或收到错误时 我的代码: $test_array = explode(PHP_EOL, $array_data); $fh = fopen('file.csv', 'w'); foreach($test_array as $line){ fputcsv($fh, $line); } fclose(

我正在尝试将2D数组导出到CSV文件中。这应该很简单。。。但我尝试了我能找到的每一个fputcsv示例,但没有任何效果。要么将整个阵列放入一行中。。。或者当我试图通过foreach循环插入或收到错误时

我的代码:

$test_array = explode(PHP_EOL, $array_data);

$fh = fopen('file.csv', 'w');

foreach($test_array as $line){
    fputcsv($fh, $line);
}

fclose($fh);
错误:

Warning: fputcsv() expects parameter 2 to be array, string given in /Users/pc_user/test_script.php on line 24
数组的内容:

array(729) {
  [0]=>
  string(163) "Name;Title;Salary;FF;AD;HD;HE"
  [1]=>
  string(32) "Bob;Manager;Hidden;3.9;0.9;2.6;3"
  [2]=>
  string(32) "Tom;Student;Hidden;4.9;0.2;2.5;2"
  [3]=>
  string(34) "Jim;WorkerBee;Hidden;3.9;0.9;2.6;4"
  [4]=>
  string(35) "Fred;Poohbah;Hidden;3.5;0.4;3.6;2"
  [5]=>
  string(34) "Jake;Manager;Hidden;3.3;0.9;4.6;2"
  [6]=> ... And so on with 732 rows...

这是因为
$line
是字符串而不是数组。因为
fputcsv
期望第二个参数是数组,所以更改

fputcsv($fh, $line);


$line
实际上不是数组。你应该分解
上的每一行是的,这很有效。谢谢
fputcsv($fh, explode(';', $line));