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]
,就可以了。果然,这就解决了问题……感谢您的输入。斯科特:谢谢你的回答——我投了赞成票,但看到了乔纳森的第一个,所以我接受了他的回答