如何将多维数组写入csv文件。 PHP

时间:2018-02-18 23:34:01

标签: php arrays file

我有一个包含以下内容的多维数组$csv

Array ( [0] => JOHN WILLIAMS [1] => 6/8/1998 [2] => 55456434E [3] => 4321 )
Array ( [0] => SARAH JONES [1] => 15/01/1982 [2] => 56834645Q [3] => 1234 )
Array ( [0] => JAMES BRENNAN [1] => 09/05/1978 [2] => 25689514W [3] => 8575)

我从csv文件中获取此数组以更新文件中的一个元素。现在它已更新,我想将更新的元素添加回新的csv文件。

$csv = array();
$lines = file("persistence/employee_data.csv", FILE_IGNORE_NEW_LINES);

foreach ($lines as $key => $value)
{
    $csv[$key] = str_getcsv($value);
}

我想将此更新的数组写入新的csv文件,但您无法将多维数组写入csv文件。我想将此数组转换为类似这样的

Array ( [0] => JOHN WILLIAMS [1] => 6/8/1998 [2] => 55456434E [3] => 4321 )
Array ( [0] => SARAH JONES [1] => 15/01/1982 [2] => 56834645Q [3] => 1234 )
Array ( [0] => JAMES Brennan [1] => 09/05/1978 [2] => 25689514W [3] => 8575 
) 

所以我可以轻松地使用fputcsv()函数将数组的内容写入csv文件。

    $dataSrc = "persistence/employee_data.csv";
   $outFile = fopen($dataSrc, "w") or die("Unable to open file!");
   fputcsv($outFile, $csv);
   fclose($outFile);
注意我知道如何创建和写入新文件,我只需要帮助解决多维数组问题,将其转换为可以轻松写入csv文件的内容。

csv文件中的格式如下所示(不包括附件)。

JANE WILLIAMS,6/8/1998,55846874E,4321 
SARAH JONES,15/01/1982,56897547Q,1234
JAMES BRENNAN,09/05/1978,25689514W,8575

这样做的最佳方法是什么?

编辑

只需简单地使用a来表示每个语句lol。

   $dataDest = "persistence/employee_data.csv";
   $outFile = fopen($dataDest, "w") or die("Unable to open file!");

   foreach($csv as $value){

       fputcsv($outFile, $value);

   }

fclose($outFile);

2 个答案:

答案 0 :(得分:1)

fputcsv()将单个一维数组写入文件指针。您需要循环遍历二维数组并为每个子数组调用它。

答案 1 :(得分:1)

如您所知,fputcsv()将一维数组作为输入,并将每个元素保存在一行中。

要将每个数组保存在数组中,请循环访问父数组并像通常使用fputcsv()一样保存每个子数组:

<?php
$data[] = ["JANE WILLIAMS", "6/8/1998", "55846874E", "4321"];
$data[] = ["SARAH JONES", "15/01/1982", "56897547Q", "1234"];
$data[] = ["JAMES BRENNAN", "09/05/1978", "25689514W", "8575"];

$outFile = fopen("data.csv", "w") or die("Unable to open file!");
foreach ($data as $row) {
    fputcsv($outFile, $row);
}
fclose($outFile);