【问题标题】:How to write a multidimensional array to a csv file. PHP如何将多维数组写入 csv 文件。 PHP
【发布时间】:2018-02-18 23:34:00
【问题描述】:

我有一个多维数组$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

最好的方法是什么?

编辑

只是简单地为每个语句使用了一个 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);

【问题讨论】:

    标签: php arrays file


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-09-27
        • 2014-08-20
        • 2019-01-29
        • 2018-03-08
        • 2015-08-07
        • 2011-04-10
        • 1970-01-01
        • 2013-10-29
        相关资源
        最近更新 更多