我有一个包含以下内容的多维数组$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文件中的格式如下所示(不包括附件)。
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);
答案 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);