如何使用php读取csv文件的特定列
问题描述:
我使用下面的代码来显示一个csv文件作为html表格与php。 我的问题是如何仅显示csv文件的特定列。例如,我会显示列号1,5,9,15。 如何修改代码以选择特定字段?如何使用php读取csv文件的特定列
在此先感谢,马修
<?php
$row = 1;
if (($handle = fopen("donors.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
if ($row == 1) {
echo '<tr>';
}else{
echo '<tr>';
}
for ($c=0; $c < $num; $c++) {
if(empty($data[$c])) {
$value = " ";
}else{
$value = $data[$c];
}
if ($row == 1) {
echo '<td style="border-top: 1px solid rgb(111,180,224); border-left: 1px solid rgb(111,180,224); border-bottom: 1px solid rgb(111,180,224);" align="left" bgcolor="#0066cc" height="36" valign="middle" ><b><font color="#ffffff" size="2"> '.$value.' </font></b></td>';
}else{
echo '<td style=" border-bottom: 1px solid rgb(111,180,224);" sdval="9" sdnum="1040;" align="left" bgcolor="#ffffff" height="25" valign="middle"><font color="#000000" size="2"> '.$value.' </font></td>';
}
}
if ($row == 1) {
echo '</tr>';
}else{
echo '</tr>';
}
$row++;
}
echo '</tbody></table>';
echo '</center>';
fclose($handle);
}
?>
答
// before your while loop
$wantedColumns = array(1,5,9,15);
// ...
for ($c=0; $c < $num; $c++) {
if (!in_array($c,$wantedColumns)) continue;
// ....
答
把你的CSV字符串为数组:
$data_as_array = explode(',',$data_as_csv);
echo "This is the value in column #2: ".$data_as_array[1];
此解决方案不考虑尚未行数,这个帖子确实(看到接受的答案):
How to create an array from a CSV file using PHP and the fgetcsv function
Your cs v文件在字段之间有分隔符? – ManuParra 2013-03-03 22:41:52