我创建了一个脚本,尝试解析上传的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>';
?>
答案 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
我认为这会让你到达你想要的地方。