-1

csvファイルを取得し、それを配列に入れて、その配列をhtmlテーブルに表示するためのphpコードがいくつかあります。このコードは、複数(約10)列のデータファイルに使用されます。データポイントを小数点以下2桁に丸めたいのですが、$ val = round($ val、2)を使用してこれを行うことができました。ただし、コード内で使用すると、時間列の形式も変更されるため、12:00ではなく12が表示されます。時間列をそのままにして配列内の特定の列の10進数形式を変更する方法を知っている人がいる場合は、お知らせ下さい。これが私が今持っているコードです:

$out = '';
echo "<th> Time </th><th> Temperature </th><th> Speed  </th>";
$handle = fopen("fakedata.csv", "r");

$columns = array(1,3,5);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $out = ("<tr>\r\n").$out;
        foreach ($data as $index=>$val) {
                if (in_array($index+1, $columns))
            {
                    $val = round($val, 2);
                    $out = ("\t<td>$val</td>\r\n").$out;
            }
    }

        echo("</tr>\r\n");
} //end while
echo $out;

echo "\n</table></body></html>";

($ outのものがおかしいことは知っていますが、行の順序を反転して最新のデータを最初に表示します)。とにかく、私の主な問題は、csv配列の特定の行の小数点以下の形式を変更することです。この場合、$column[3]または3番目の列のみを小数点以下2桁に変更します。助けてくれてありがとう。

4

2 に答える 2

0

3番目の列にあるかどうかを確認する場合は、もう1つ追加します。この場合、省略形の三項演算子を使用しました。

if (in_array($index+1, $columns)) {
    $val = ($index+1 == 3) ? round($val, 2) : $val;
    $out = ("\t<td>$val</td>\r\n").$out;
}
于 2013-03-26T03:42:54.320 に答える
0

sprintf()の魔法に頼るのはどうですか?それ以外の:

$val = round($val, 2);
$out = ("\t<td>$val</td>\r\n").$out;

試す:

$out = sprintf("\t<td>% 6.2f</td>\r\n%s",$val,$out);
于 2013-03-26T07:14:56.263 に答える