对于php中的每个循环


For each loop in php

因此,我一直在尝试在PHP中使用foreach循环来读取和显示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文件中的最后一条记录。为什么会这样?在我理解原因之前,我认为我无法解决问题并显示所有记录。

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>";
}

试着这样做,在当前语法中,它会将第一行视为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>";
    }
?>

这就是为什么所有控制块(if和循环)都应该用大括号包装。。。您的代码只循环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>";
            }
        ?>