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 配列をループできます (有効な配列である場合は、それを確認する必要がある場合があります...)。コンマの間にあったデータ。

于 2010-05-11T15:49:30.833 に答える