我是PHP的新手,希望能够读入一个有两列的csv文件,一个是数字(类似ID),另一个是整数值。我查找了fgetcsv函数,但是我找不到从csv文件中读取特定列的方法。
我想从第二列获取所有值,没有标题。
任何方式这样做?
这是我到目前为止所做的:
$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
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:5)
fgetcsv()一次只读取文件的一行。你必须在循环中读取文件才能全部完成:
$data = array();
while($row = fgetcsv($file)) {
$data[] = $row;
}
您可以在循环外执行fgetcsv跳过的标题,以读取/删除标题值。如果你只想要第二列,你可以这样做:
$data[] = $row[1];
但是,既然你有数据,也许保留它可能是有用的,加上用csv中的ID值键入你的新数组,所以你也可以:
$data[$row[0]] = $row[1];
然后你的漂亮闪亮的新数组将完全匹配csv中的内容,但是作为ID字段键入的数组。
答案 1 :(得分: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
答案 2 :(得分:1)
$header = fgetcsv($h);
$rows = array();
while ($row = fgetcsv($h)) {
$rows []= array_combine($header, $row);
}
答案 3 :(得分: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));
答案 4 :(得分:0)
您也可以使用此课程http://code.google.com/p/php-csv-parser/
<?php
require_once 'File/CSV/DataSource.php';
$csv = new File_CSV_DataSource;
$csv->load('data.csv');
var_export($csv->connect());
?>