1

我正在尝试将数据从 csv 文件导入到一些 html 代码中,以便在我已经编码的图形中使用它。我正在尝试使用 PHP 和 fgetcsv 为每个单独的数据创建数组,以使用 PHP 将其放入 html 代码中。我知道如何打开 csv 文件并使用 PHP 打印它,以及如何打印每个单独的行,但不是用逗号分隔的每条数据。有没有办法做到这一点?

如果这有帮助,这就是我要导入的 csv 数据。

May 10,72,12,60
May 11,86,24,62
May 12,67,32,34
May 13,87,12,75
May 14,112,23,89
May 17,69,21,48
May 18,98,14,84
May 19,115,18,97
May 20,101,13,88
May 21,107,32,75

我希望这是有道理的。


我正在尝试将值放入以下 ​​html 代码中:

<dd class="pVALUE3"><span><b>VALUE3</b></span></dd>
<dd class="sub pVALUE2" ><span><b>VALUE2</b></span></dd>

到目前为止,我的 PHP 代码是:

    <?PHP 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $date[$c] = $data[0]
        echo "<dd class=\"p" . $data[2] . echo "\"><span><b>" . $data[2] . echo "</b></span></dd>
        <dd class=\"sub p" . $data[3] .  echo "\" ><span><b>" . $data[3] . echo "</b></span></dd>"
        }
                    ?>

但它回来了,有一个意想不到的 T_ECHO ......

4

3 回答 3

2

我已经设法使用以下代码解决了这个问题:

 <?PHP
/* Open CSV file */

$handle = fopen("defects.csv", "r");
$c = 0;
/* gets data from csv file */
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
/* stores dates as variable $date */
        $date[$c] = $data[0];
        $c++;
        /* inserts defect data into html code */
        echo "<div class=\"bar\"><dd class=\"p" . $data[2] . "\"><span><b>" . $data[2] . "</b></span></dd></div>";
        echo "<div class=\"subbar\"<dd class=\"sub p" . $data[3] . "\" ><span><b>" . $data[3] . "</b></span></dd></div>";
}

echo "</dl>";
echo "<ul class=\"xAxis\">";
/* X AXIS */
/* inserts date data into html code for x axis */
for ($d=0; $d < $c; $d++) {
    echo "<li>" . $date[$d] . "</li>";
}
?>
于 2010-05-12T10:28:34.783 回答
1

我认为你已经走到这一步了?

while (($row = fgetcsv($handle, null, ",", '"')) !== false) {
        print_r($row);

之后你可以

foreach($row as $field){
   ...

不?

对于您提供的导入数据,您必须:

preg_match('/^(\w+) (\d+)$/i', $row[0], $bits);
$month = $bits[1];
$row[0] = $bits[2];

获取月份名称。

正如 thetaiko 评论的那样,粘贴您的代码,也许有一个错误要压缩。

于 2010-05-11T15:44:59.913 回答
0

我假设您希望行中的每个项目都作为单独的数据,对吗?那么“May 10”、“72”、“12”等都是分开的吗?

使用 fgetcsv 你应该能够做到这一点:

while (($data = fgetcsv('file.csv')) !== FALSE)
{
    foreach ($data as $element)
    {
        echo $element.' ';
    }
    echo '<br />';
}

每次 fgetcsv 读取一行时(直到返回 FALSE 表示文件结束),您可以循环遍历 $data 数组(假设它是一个有效的数组,可能需要检查...)每个 $element 现在是逗号之间的数据。

于 2010-05-11T15:49:30.833 回答