对于php

时间:2016-04-30 06:22:56

标签: php foreach

所以,我一直在试验php中的每个循环,作为一种阅读和显示csv文件内容的方式。这就是我到目前为止所做的:

$file = file("games.csv");
foreach($file as $k)
    $csv = explode(',',$k);
    echo "<tr> 
        <td>$csv[0]</td>
        <td>$csv[1]</td>
        <td>$csv[2]</td>
        <td>$csv[3]</td>
        <td>$csv[4]</td>
        </tr>";
?>

它可以工作,但只显示csv文件中的最后一条记录。为什么是这样?直到我能理解为什么,我认为我不能解决问题并显示所有记录

3 个答案:

答案 0 :(得分:2)

{的正文周围添加大括号} foreach。您正在使用的语法意味着只有第一行被循环。

foreach($file as $k) {
    $csv = explode(',',$k);
    echo "<tr> 
        <td>$csv[0]</td>
        <td>$csv[1]</td>
        <td>$csv[2]</td>
        <td>$csv[3]</td>
        <td>$csv[4]</td>
        </tr>";
}

答案 1 :(得分:0)

尝试这样做,在你当前的语法中,它将第一行视为foreach体的一部分,这就是它只回显你CSV文件的最后一行的原因。

<?php
    $file = file("games.csv");
    foreach($file as $k)
    {
        $csv = explode(',',$k);
        echo "<tr> 
           <td>$csv[0]</td>
           <td>$csv[1]</td>
           <td>$csv[2]</td>
           <td>$csv[3]</td>
           <td>$csv[4]</td>
       </tr>";
    }
?>

答案 2 :(得分:0)

这就是所有控制块(ifs和loop)都应该用大括号括起来的原因......你的代码只是在foreach之后循环第一个语句。

$file = file("games.csv");
            foreach($file as $k) {
                $csv = explode(',',$k);
                echo "<tr> 
                        <td>$csv[0]</td>
                        <td>$csv[1]</td>
                        <td>$csv[2]</td>
                        <td>$csv[3]</td>
                        <td>$csv[4]</td>
                    </tr>";
            }

        ?>