0

我阅读了大多数关于我的问题的讨论,但我没有找到解决方案。所以,我有一个 .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 建议的解决方案编辑代码!该代码现在正在运行。感谢所有的答复。

布鲁斯

4

2 回答 2

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);
于 2013-03-29T13:39:47.347 回答
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);
于 2013-03-29T13:39:37.563 回答