Php 使用fgetcsv()从数组生成具有行数据属性的HTML表
我正在使用Php 使用fgetcsv()从数组生成具有行数据属性的HTML表,php,arrays,csv,fgetcsv,Php,Arrays,Csv,Fgetcsv,我正在使用fgetcsv()读取此格式的csv文件 Make, Model, Origin, Color, Miles, Options Chevy, Tahoe, Delaware, Black, 10000, LX Ford, F150, Texas, Red, 5000, S Chevy, Corvette, Utah, Red, 12000, SE Mazda, Miata, Florida, Blue, 90000, LX …然后生成一个HTML表。虽然我可以将每个数据值放入一个单独
fgetcsv()
读取此格式的csv文件
Make, Model, Origin, Color, Miles, Options
Chevy, Tahoe, Delaware, Black, 10000, LX
Ford, F150, Texas, Red, 5000, S
Chevy, Corvette, Utah, Red, 12000, SE
Mazda, Miata, Florida, Blue, 90000, LX
…然后生成一个HTML表。虽然我可以将每个数据值放入一个单独的单元格中,但我希望将模型的颜色
和选项
值列为HTML数据属性因此我当前的输出如下所示:
<table>
<tr>
<td>Chevy</td>
<td>Tahoe</td>
<td>Delaware</td>
<td>Black</td>
<td>10000</td>
<td>LX</td>
</tr>
<tr>
<td>Ford</td>
<td>F150</td>
<td>Texas</td>
<td>Red</td>
<td>5000</td>
<td>S</td>
</tr>
</table>
<table>
<tr data-color="black" data-options="LX">
<td>Chevy</td>
<td>Tahoe</td>
<td>Delaware</td>
<td>10000</td>
</tr>
<tr data-color="red" data-options="s">
<td>Ford</td>
<td>F150</td>
<td>Texas</td>
<td>5000</td>
</tr>
</table>
雪佛兰
塔霍
特拉华州
黑色
10000
LX
河流浅水处
F150
得克萨斯州
红色
5000
s
当我希望它看起来像这样时:
<table>
<tr>
<td>Chevy</td>
<td>Tahoe</td>
<td>Delaware</td>
<td>Black</td>
<td>10000</td>
<td>LX</td>
</tr>
<tr>
<td>Ford</td>
<td>F150</td>
<td>Texas</td>
<td>Red</td>
<td>5000</td>
<td>S</td>
</tr>
</table>
<table>
<tr data-color="black" data-options="LX">
<td>Chevy</td>
<td>Tahoe</td>
<td>Delaware</td>
<td>10000</td>
</tr>
<tr data-color="red" data-options="s">
<td>Ford</td>
<td>F150</td>
<td>Texas</td>
<td>5000</td>
</tr>
</table>
雪佛兰
塔霍
特拉华州
10000
河流浅水处
F150
得克萨斯州
5000
但是,我现在使用的PHP只提供“color”(来自标签行)的数据属性值作为每个
的属性。比如说,
<tr data-color="Color" data-options="Options">
<td>Ford</td>
<td>F150</td>
<td>Texas</td>
<td>5000</td>
</tr>
河流浅水处
F150
得克萨斯州
5000
是否有人建议从数组中获取适当的值作为每行的数据属性?以下是我当前的PHP:
<?php
$handle = fopen("cars.csv", "r");
$data = fgetcsv($handle, 1000, ",");
$color = $data[3];
$options = $data[5];
echo('<table>');
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
//generate HTML
echo('<tr data-color="' . $color . '" data-options="' . $options . '">');
foreach ($data as $index=>$val) {
echo('<td>');
echo htmlentities($val, ENT_QUOTES);
echo('</td>');
}
echo('</tr>');
}
echo("</table>");
fclose($handle);
?>
您的
$color
和$options
变量当前只是列标题
将代码更改为以下内容:
<?php
$handle = fopen("cars.csv", "r");
$data = fgetcsv($handle, 1000, ",");
$color = $data[3];
$options = $data[5];
echo('<table>');
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$color = $data[3];
$options = $data[5];
//generate HTML
echo('<tr data-color="' . $color . '" data-options="' . $options . '">');
foreach ($data as $index=>$val) {
echo('<td>');
echo htmlentities($val, ENT_QUOTES);
echo('</td>');
}
echo('</tr>');
}
echo("</table>");
fclose($handle);
?>
在循环外部设置$color,但从不更新循环内部的值。您可能只需在循环内将$color更改为$data[3]就可以了。您正在循环外设置$color
,但从不更新循环内的值。您可能只需在循环内将$color
更改为$data[3]
,就可以了。果然,这就解决了问题……感谢您的输入。斯科特:谢谢你的回答——我投了赞成票,但看到了乔纳森的第一个,所以我接受了他的回答