我想在getcsv中获取列标题的值,但我不能。
示例输入:
姓名,地址,年龄
约翰,加利福尼亚州,26
,Michael,L.A,29
如果我在row2 column2中,我想获得标题的名称地址。但我的代码返回为L.A。
这是我的代码:
<?php
echo '<table class="tbl">';
while(($data = fgetcsv($handle, 1000, ",")) !== false)
{
$col = count($data);
$header = $data[0]; //I AM SUPPOSED to get this value but this returns to the current cell and not the column header.
echo '<tr>';
for ($c=0; $c < $col; $c++) {
$cell = esc_html( $data[$c] );
$colnum = $c + 1;
if( $row == 0)
{
echo "<td style='text-transform:uppercase;'><br><br>".
"<b>{$cell}</b></td>";
}
else
{
echo "<td>{$cell} = {$header}</td>"; //{$row} = {$colnum}
}
}
echo '</tr>';
$row++;
}
echo '</table>';
根据上面的输入和代码,这是输出:
姓名,地址,年龄
约翰=约翰,加利福尼亚=加利福尼亚州,26 = 26周迈克尔=迈克尔,L.A = L.A,29 = 29
我应该得到每列的标题值,如下所示:
姓名,地址,年龄
约翰=姓名,加利福尼亚=地址,26 =年龄
迈克尔=姓名,L.A =地址,29 =年龄
答案 0 :(得分:1)
可能有更好的答案,但下面的代码会有效。
您的CSV数据将按以下方式返回:
Array ( [0] => Name [1] => Address [2] => Age )
Array ( [0] => John [1] => California [2] => 26 )
Array ( [0] => Michael [1] => L.A [2] => 29 )
更新了答案
<?php
$headerValues = array();
$counter = 0;
$row = 0;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
echo '<table class="tbl">';
while(($data = fgetcsv($handle, 1000, ",")) !== false)
{
// You need to grab the header values on first iteration
if ($counter == 0) {
// store them in an array
$headerValues = $data;
// increment counter
$counter++;
}
$col = count($data);
echo '<tr>';
for ($c=0; $c < $col; $c++) {
// grab column name here
$headerName = $headerValues[$c];
$cell = $data[$c];
$colnum = $c + 1;
if( $row == 0)
{
echo "<td style='text-transform:uppercase;'><br><br>".
"<b>{$headerName}</b></td>";
}
else
{
echo "<td>{$cell} = {$headerName}</td>"; //{$row} = {$colnum}
}
}
echo '</tr>';
$row++;
}
echo '</table>';
}
?>