按列解析 PHP 中的 CSV 文件
parse CSV file in PHP by column
我想按列打开 PHP 中的 CSV(逗号分隔值)文件,我想从 3 列中获取所有数据。我试过这段代码,但这只按行显示数据:
$row = 1;
if (($handle = fopen("ut.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
如何从一列中获取所有数据?
示例:
这是我在 Excel 中导出到 SCV 的文件:
http://prntscr.com/mzcfcw
我想从 Name 和 Price 列中获取 php 值,并在 Name 列中找到重复的值,比较它们的价格。
fgetcsv 逐行(行)解析给定的句柄。无法使用核心 php 按列解析 csv 文件。但是,如果您知道要访问其值的 3 列的位置,则可以简单地忽略所有其他列:
//position (zero indexed) of required columns
$columnsToProcess=[0,3,4]
for ($c=0; $c < $num; $c++) {
//do something with value if column's index is in the required columns array
if(in_array($c,$columnsToProcess)){
//value at position $c equals $data[$c]
echo $data[$c] . "<br />\n";
}
}
关于 fgetcsv 的教育信息:http://php.net/manual/en/function.fgetcsv.php
我想按列打开 PHP 中的 CSV(逗号分隔值)文件,我想从 3 列中获取所有数据。我试过这段代码,但这只按行显示数据:
$row = 1;
if (($handle = fopen("ut.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
如何从一列中获取所有数据?
示例: 这是我在 Excel 中导出到 SCV 的文件: http://prntscr.com/mzcfcw
我想从 Name 和 Price 列中获取 php 值,并在 Name 列中找到重复的值,比较它们的价格。
fgetcsv 逐行(行)解析给定的句柄。无法使用核心 php 按列解析 csv 文件。但是,如果您知道要访问其值的 3 列的位置,则可以简单地忽略所有其他列:
//position (zero indexed) of required columns
$columnsToProcess=[0,3,4]
for ($c=0; $c < $num; $c++) {
//do something with value if column's index is in the required columns array
if(in_array($c,$columnsToProcess)){
//value at position $c equals $data[$c]
echo $data[$c] . "<br />\n";
}
}
关于 fgetcsv 的教育信息:http://php.net/manual/en/function.fgetcsv.php