在php中循环打印csv内容的问题

问题描述:

这段代码只是关于作品:在php中循环打印csv内容的问题

我可以吐出所有的数组数据,但我想要的是能够按列打印出数据列。

function processCSV() 
{ 
    global $uploadFile; 
    $loadLocationCsvUrl = fopen($uploadFile,"r"); 
    if ($loadLocationCsvUrl <> false) 
    { 
     while ($locationFile = fgetcsv($loadLocationCsvUrl, ',')) 
     { 
      $csvCols = array(
          'country' => $locationFile[9], 
          'open' => $locationFile[4], 
          'officeid' => $locationFile[2] 
          ); 
      foreach($csvCols as $locationData) 
      { 
       if ($locationData == '') { 
        echo "<p>" . "blank" . "</p>"; 
       } 
       else 
       { 
        echo "<p>" . $locationData . "</p>";   
       } 
      } 
     } 
    }  
    fclose($loadLocationCsvUrl); 
} 
processCSV(); 

我想这会工作:

echo "<p>" . $locationData['country'] . "</p>"; 

但如果我这样做,我看到一个格式错误的页面,像下面的(上传截图)。

http://www.imageupload.org/?d=9C676F041


我设法用不同的实施工作了这一点,我切换到一个二维数组,表渲染从未有人获得数据的问题。

<?php 
function processCSV() 
{ 
    global $uploadFile; 
    $loadLocationCsvUrl = fopen($uploadFile,"r"); 
    if ($loadLocationCsvUrl <> false) 
    { 
     while ($locationFile = fgetcsv($loadLocationCsvUrl, ',')) 
     { 
      $officeId = $locationFile[2]; 
      $country = $locationFile[9]; 
      $open = $locationFile[4]; 
      echo "<table>"; 
       echo "<tr>"; 
        echo "<td>$officeId</td>"; 
        echo "<td>$country</td>"; 
        echo "<td>$open</td>"; 
       echo "</tr>"; 
      echo "</table>"; 
     } 
    } 
    fclose($loadLocationCsvUrl); 
} 
processCSV(); 
?> 

如果我浪费了任何时间,谢谢您的回复和抱歉。

+1

你在和谁说话? – 2011-05-13 12:22:44

+2

旧的调试和反复试验(以及回声)发生了什么。 *.com不是调试器! – 2011-05-13 12:25:25

+0

@ user752336您的图片已损坏。你能直接上传到SO吗? – JohnP 2011-05-13 12:25:38

这听起来像你想显示输出科拉姆明智的。在这种情况下,<table>是预期的标记。但我会先简化你的代码:

// read in 
$csv = array_map("str_getcsv", file($uploadFile)); 

// output 
print "<table>"; 
foreach ($csv as $row) { 
    print <<<HTML 
     <tr> 
     <td>$row[9]</td> 
     <td>$row[4]</td>   
     <td>$row[2]</td> 
     </tr> 
HTML; 
} 

如果你不使用列的关联数组键,那么创建它们没有意义。

<p>是块元素,因此每个连续的一个前进到通过设计一个新行。你可以设置'display:inline;'在你的CSS,如果你想,但为什么使用<p>?

您可以使用内联元素,如<范围>或使用'float:left'使块元素按您的需要行为。

这是假设的数据是不恰当的列表。

做出那么父表TR和TD,

现在,这个TD内,一张桌子和打印TD-TRS的列

然后关闭该表

打印新的TD在父

重复一列TRS

例子的表....

<table><tr><td> 
    <table> 
    <tr><td>col1stuff1</td></tr> 
    <tr><td>col1stuff2</td><tr> 
    <tr><td>col1stuff3</td><tr> 
    </table> 
</td><td> 
    <table> 
    <tr><td>col2stuff1</td></tr> 
    <tr><td>col2stuff2</td><tr> 
    <tr><td>col2stuff3</td><tr> 
    </table> 
</td><td> 
    <table> 
    <tr><td>col3stuff1</td></tr> 
    <tr><td>col3stuff2</td><tr> 
    <tr><td>col3stuff3</td><tr> 
    </table> 
</td></tr></table>