php - 使用 fgetcsv() 生成包含数组中行数据属性的 HTML 表

标签 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 表格。虽然我可以将每个数据值放入单个单元格中,但我想列出模型的 coloroptions作为 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>

但是,我现在使用的 PHP 仅提供“颜色”的数据属性值(来自标签行)作为每个 <tr> 上的属性。 。例如,

    <tr data-color="Color" data-options="Options">
       <td>Ford</td>
        <td>F150</td>
        <td>Texas</td>
        <td>5000</td>
    </tr>

有人建议从数组中获取适当的值作为每行的数据属性吗?这是我当前的 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);
?>

关于php - 使用 fgetcsv() 生成包含数组中行数据属性的 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24618682/

相关文章:

javascript - 当我在正则表达式中包含数组引用时测试失败(正则表达式中带有索引的数组)JavaScript

javascript - 获取所有 css 类背景和颜色属性值

linux - 命令行 CSV 查看器

PHP无法从mysql获取数据

php - PHP 中 !empty($variable) 和 count($variable) 的 bool 结果总是相等吗?

php - 如何使用 $variable 作为定义常量的名称来访问 php 定义的常量

c++ - 使用 boost::spirit::qi 解析类型化的 csv 文件

php - 如何检查用户是否选择了多个复选框

c++ - cocos2d-x:来自另一个类的 CRUD 二维数组

python - 尝试将 csv 文件读入 python 时内存不足