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 に答える