3

私はPHPが初めてで、2つの列を持つcsvファイルを読み込めるようにしたいと考えています。1つは数値(IDのようなもの)で、もう1つは整数値を保持しています。fgetcsv 関数を調べましたが、csv ファイルから特定の列を読み取る方法が見つかりませんでした。

見出しなしで、2 番目の列のみからすべての値を取得したいと思います。

これを行う方法はありますか?

これは私がこれまでに持っているものです:

$file = fopen('data.csv', 'r');
$line = fgetcsv($file);

これは csv ファイルのサンプル データです。

ID,Value
1,243.00
2,243.00
3,243.00
4,243.00
5,123.11
6,243.00
7,180.00
8,55.00
9,243.00

どんな助けでも大歓迎です。

ありがとう。

4

5 に答える 5

5

fgetcsv() は、一度にファイルの 1 行のみを読み取ります。すべてを取得するには、ファイルをループで読み取る必要があります。

$data = array();
while($row = fgetcsv($file)) {
   $data[] = $row;
}

ループの外で一度 fgetcsv を実行してヘッダー値を読み取り/破棄することでスキップできるヘッダー。2 番目の列だけが必要な場合は、次のようにします。

   $data[] = $row[1];

ただし、そこにデータがあるので、それを保持し、csv の ID 値を使用して新しい配列にキーを設定すると、次のようにすることもできます。

   $data[$row[0]] = $row[1];

そして、あなたの素敵な光沢のある新しい配列は、csv の内容とほぼ正確に一致しますが、ID フィールドによってキー付けされた配列となります。

于 2012-08-17T15:54:27.330 に答える
1
$header = fgetcsv($h);
$rows = array();
while ($row = fgetcsv($h)) {
    $rows []= array_combine($header, $row);
}
于 2012-12-12T16:14:29.777 に答える
1
$csv = array_map("str_getcsv", file("data.csv", "r")); 
$header = array_shift($csv); 
// Seperate the header from data

$col = array_search("Value", $header); 
 foreach ($csv as $row) {      
 $array[] = $row[$col]; 
}
// Iterate through data set, creating array from Value column
于 2012-08-17T15:54:40.197 に答える
1
$fp = fopen($filePath, "r+");
$header = fgetcsv($fp);
while ($members = fgetcsv($fp)) {
    $i = 0;
    foreach ($members as $mem) {
        $membersArray[ $i ][ ] = $mem;
        $i++;
    }
}

$newArray = array_combine($header, array_map("array_filter",$membersArray));
于 2015-03-17T06:19:39.867 に答える