2014-02-10 17 views
0

概述

我創建了嘗試解析上傳CSV文件,依次通過行和列的腳本,出將它們放入一個語義HTML表格。我試圖添加一個條件。如果聲明,將只顯示具有在柱A值大於0.40 6磨碎器表中的行(我濾波導入的CSV的,以去除具有跳出率低於40%N的列表中的行)解析CSV到HTML表顯示TR有條件

藉口

我看不見樹林裏的木頭,所以可以在這裏說。我是一名初級開發人員,與.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

的問題是可能的事實是,你是顯示更改值之前,該行

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 

我認爲這會讓你在你想要的地方。

+0

嗨,我正在嘗試整合這..但理解,但...我很努力想看看要刪除什麼以及在哪裏添加您的建議? –

+0

我只添加了最後一行。其他線是你的,純粹是爲了參考(所以你可以找到合適的地方放置它)。問題在於,您正在查看「showRow」將顯示設置爲NONE,但直到您已經放棄該行的起始位置後纔會檢查該列。我懷疑這實際上是導致「NEXT」行在遇到行程點時被隱藏。你不應該從代碼中刪除任何東西,只需添加一行。 – DragonYen

+0

這是否讓你啓動並運行? – DragonYen