2016-07-28 71 views
0

我有一點PHP代碼,它從CSV文件獲取信息,將其存儲在數組中,然後將數據顯示在HTML表格中。我的代碼當前使用一系列for循環來顯示錶頭(鍵)和表格內容(步驟)。我遇到的問題是我無法弄清楚如何讓代碼遍歷並列​​出每一個信息數組,現在它只顯示最後一個(在每個循環中顯示的數量由$ x變量指定)PHP循環列出數組中的所有項目,而不僅僅是最後一個

如果有人可以幫助我在這將大大appriciated表使用foreach循環獲得超過一個單一的價值,我的代碼如下:

<?PHP 

// Deals with potential MAC line endings 
ini_set("auto_detect_line_endings", true); 


// Define function to read info from .CSV 
function readCSV($csvFile) 
{ 
    $file_handle = fopen($csvFile, 'r'); 
    while (!feof($file_handle)) 
     { 
     $line_of_text[] = fgetcsv($file_handle, 1024); 
     } 
    fclose($file_handle); 
    return $line_of_text; 
    } 

// Locate the .CSV to read 
$csvFile = '500.csv'; 
$csv = readCSV($csvFile); 

// Uses first line of .CSV for keys 
$keys = $csv[0]; 

// For loop to set how many arrays to print 
for ($x=1; $x <=2; $x++) 
{ 
    $step = $csv[$x]; 
    foreach ($step as $k => $v) 
    { 
     $array[$keys[$k]] = $v;  
    } 
    echo '<pre>'; 
    print_r($array); 
    echo '</pre>'; 
} 

// Use data from arrays to build HTML table 
print "<table>"; 
// Header 
print "<tr>"; 
for ($x=0; $x <=10; $x++) 
{ 
    print "<th>$keys[$x]</th>"; 
} 
print "</tr>"; 
//Field data 
print "<tr>"; 
for ($x=0; $x <=10; $x++) 
{ 
    print "<td>$step[$x]</td>"; 
} 
print "</tr>"; 
+0

'readCSV()'不是一個本地的PHP函數。這將有助於看到這個定義。除此之外,你只得到兩行(標題加一行數據),因爲你明確地只輸出兩行。你的循環創建你的列,而不是你的行。 –

+0

爲什麼不迭代'$ array'?你可以發佈它的print_r嗎? –

+0

'$ x <= 2'應該是'$ x Walf

回答

0

變化 $array[$keys[$k]] = $v;$array[$x][$keys[$k]] = $v;和使用$array而不是$step在最後for

而這只是爲了保持它小:

print "<table>"; 
print "<tr><th>".implode("</th><th>",$keys)."</th></tr>"; 
foreach ($array as $arr){ 
    print "<tr><td>".implode("</td><td>",$arr)."</td></tr>"; 
} 
print "</table>"; 
相關問題