【发布时间】:2011-04-25 05:01:59
【问题描述】:
我有一个要与 php 一起使用的 csv 文件。 csv 中的第一件事是列名。一切都用逗号分隔。
我希望能够将列名作为数组名,并且该列的所有值都将在该数组名下。因此,如果 column1 下有 20 行,那么我可以执行 column1[0] 并且第一个实例(不是列名)将显示为 column1。
我该怎么做?
【问题讨论】:
我有一个要与 php 一起使用的 csv 文件。 csv 中的第一件事是列名。一切都用逗号分隔。
我希望能够将列名作为数组名,并且该列的所有值都将在该数组名下。因此,如果 column1 下有 20 行,那么我可以执行 column1[0] 并且第一个实例(不是列名)将显示为 column1。
我该怎么做?
【问题讨论】:
你想要fgetcsv 它将把CSV 文件的每一行 作为一个数组。由于您希望将每列放入自己的数组中,因此可以从该数组中提取元素并将其添加到表示列的新数组中。比如:
$col1 = array();
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
$col1[] = $row[0];
}
或者,您可以使用fgetcsv 将整个 CSV 文件读入 2D 矩阵(前提是 CSV 文件不太大):
$matrix = array();
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
$matrix[] = $row;
}
然后将你想要的列提取到它们自己的数组中:
$col1 = array();
for($i=0;$i<count($matrix);$i++) {
$col1[] = $matrix[0][i];
}
【讨论】: