将CSV解析为HTML表格有条件地显示TR

时间:2014-02-10 15:19:41

标签: php html csv

概述

我创建了一个脚本,尝试解析上传的CSV文件,遍历行和列,然后将它们放入语义HTML表中。我试图添加一个条件。 if语句只显示值为col 6大于0.40的表行(我正在过滤导入的CSV以删除列中弹跳率低于40%的表行)

借口

我看不到树林里的木头,可以这里说。我是一名初级开发人员,与.NET和Visual Studio相比,他在努力理解PHP中的调试。 PHP调试IMO要困难得多。无论如何没有辩论我是新手也许我错过了一些东西,无论我是否感谢一些帮助。我为任何疏忽或任何愚蠢道歉,我只是需要一些帮助来指出我哪里出错了以及我如何改进?

这是一个相当简单的脚本我敢肯定:(

<?php
//error Reporting
ini_set('display_errors', 1);
error_reporting(E_ERROR);


//parse imported CSV
$csvData = file_get_contents($_FILES['minefile']['tmp_name'], 'r+');
$lines   = explode("\n", $csvData);
$array   = array();
foreach ($lines as $line) {
    $array[] = str_getcsv($line);
} //$lines as $line
//count rows & cols
$colCount = count($array[0]);
$rowCount = count($array);
$showRow = true;

//start table html
echo '<table width="100%">';
//Start looping through csv row (line) by row (line)
for ($row = 0; $row <= $rowCount; $row++) {
    // debug var row loop - echo "<h1>".$col."</h1>";
    // echo '<h1>'.$hideRow ? 'true' : 'false'.'</h1>';

    //if index is 0 it must be the header (in this case)
    if ($row == 0) {
        //output table head tag
        echo '<thead>';
    } 
    else {
        //check bounce rate column (6) for a bounce rate higher than 40%
        if ($showRow == true) {
            //show row
            echo '<tr>';

        } 
        //
        else {
            //hide row
            echo '<tr style="display:none;">';
        }

    }
    for ($col = 0; $col <= $colCount; $col++) {
        if ($row == 0) {
            //
            echo '<th>' . $array[$row][$col] . '</th>';
        } //$row == 0
        else {

            if ($array[$row][$col] >= 0.40 && $col == 5)
            {
                $showRow = true;
            }
            echo '<td>' . $array[$row][$col] . '</td>';


        }

    } //$col = 0; $col <= $colCount; $col++

    if ($row == 0) {
        echo '</thead>';
    } //$row == 0
    else {
        echo '</tr>';
    }

} //$row = 0; $row <= $rowCount; $row++
echo "</table>";
echo "<h1>Debugging</h1>";
echo "<h3>Col Count: " . $colCount . " </h3>";
echo '<h3>Row Count: ' . $rowCount . '</h3>';
?>

1 个答案:

答案 0 :(得分:1)

问题可能在于您显示行的开头

echo '<tr>';
在更改$ showRow的值之前

如果您更改了一小部分代码:

for ($row = 0; $row <= $rowCount; $row++) {
    // debug var row loop - echo "<h1>".$col."</h1>";
    // echo '<h1>'.$hideRow ? 'true' : 'false'.'</h1>';

    //if index is 0 it must be the header (in this case)
    if ($row == 0) {
        //output table head tag
        echo '<thead>';
    } 
    else {
        $showRow = ($array[$row][5] >= 0.40);  //ADD THIS LINE

我认为这会让你到达你想要的地方。