无法从数组中写入csv

时间:2013-03-29 13:31:51

标签: php parsing csv

我阅读了大部分有关我的问题的讨论,但我没有找到解决方案。 所以,我有一个.csv文件,我从中读取,提取所有内容并填充多维数组。这就是我写的代码:

 if (($handle = fopen("dateRegion.csv", "r")) !== FALSE) {
 # Set the parent multidimensional array key to 0.
 $pr = 0;
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    # Count the total keys in the row.
    $count = count($data);
    # Populate the multidimensional array.
    for ($x = 0; $x < $count; $x++) {
        $brim[$pr][$x] = $data[$x];
    }
 $pr++;
  }
fclose($handle);

}

之后,我提取我需要的元素并将其放入另一个数组中。该数组将是新.csv文件的内容。

这是代码:

      $parserCsv = array();
      $dip=1;
       do {
        $region = $brim[$dip][7];
        $sex = $brim[$dip][8];
        $frequency = $brim[$dip][9];
        $value = $brim[$dip][10];
        $parserCsv[] = array($region, $sex, $frequency, $value);
      $dip++;
       } while($dip <= 6336);

这是数组的“var_dump()”:

Array(
[0] => Piemonte
[1] => maschi
[2] => 2005
[3] => 16.972) 

我尝试使用fputcsv()方法将数组$ parserCsv的内容与该脚本放在一起:

$fp = fopen('csvExtract.csv', 'w');
 foreach ($parserCsv as $fields) {
  fputcsv($fp, $fields);
 }
fclose($fp);

但它不起作用。文件csvExtract.csv的内容为空。我不明白我的错误,我尝试了其他解决方案,如创建数组$ parserCsv,如:

 $parserCsv = array(
    array($region), array($sex), array($frequency), array($value));

并没有任何改变。有人有建议吗?

编辑:使用mkjasinski建议的解决方案编辑代码!代码现在正在运行。 感谢所有的回复。

布鲁斯

2 个答案:

答案 0 :(得分:1)

试试这个:

if (($handle = fopen("dateRegion.csv", "r")) !== FALSE) {
    # Set the parent multidimensional array key to 0.
    $pr = 0;
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        # Count the total keys in the row.
        $count = count($data);
        # Populate the multidimensional array.
        for ($x = 0; $x < $count; $x++) {
            $brim[$pr][$x] = $data[$x];
        }
        $pr++;
    }
    fclose($handle);
}

和此:

$parserCsv = array();
$dip=1;
do {
    $region = $brim[$dip][7];
    $sex = $brim[$dip][8];
    $frequency = $brim[$dip][9];
    $value = $brim[$dip][10];
    $parserCsv[] = array($region, $sex, $frequency, $value);
    $dip++;
} while($dip <= 6336);

并保存:

$fp = fopen('csvExtract.csv', 'w');
foreach ($parserCsv as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);

答案 1 :(得分:0)

你得到一些错误吗? 该文件是否在其他软件中打开? (比如MS Excel?)

以下代码以CSV格式输入4条记录

$parserCsv = array(
   array('Piemonte'),
   array('maschi'),
   array(2005),
   array(16.972)
);

$fp = fopen('blah.csv', 'w');
foreach($parserCsv as $fields)
{
   fputcsv($fp, $fields);
}
fclose($fp);