PHP循环列出数组中的所有项目,而不仅仅是最后一项

时间:2016-07-28 12:11:31

标签: php foreach

我有一些PHP代码从CSV文件中获取信息,将其存储在数组中,然后在HTML表格中显示数据。我的代码目前使用一系列for循环来显示表头(键)和表内容(步骤)。我遇到的问题是我无法弄清楚如何让代码循环并列出每个信息数组,此时它只显示最后一个(在每个循环中由$ x变量指定显示的数量。) / p>

如果有人可以帮助我使用表格中的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>";

1 个答案:

答案 0 :(得分: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>";