0

我的 php 代码如下所示,示例中的 CSV 文件如下所示:

Widget1,蓝色,10 美元,有货

Widget2,红色,12 美元,缺货

Widget3,绿色,14 美元

<?PHP

    $file_handle = fopen("widgets.csv", "r");

    while (!feof($file_handle) ) {

        $line_of_text = fgetcsv($file_handle, 1024);

        $counter = count($line_of_text)."<br />";

        echo $counter;

        for($i=0; $i<$counter; $i++){
            echo $line_of_text[$i];
        }

        echo "<br />";

    }

    fclose($file_handle);

?>

当我运行代码时,我得到以下结果:

4
Widget1 blue $10 have stock
4
Widget2 red $12 out of stock
3
Widget3 green $14
1

我真的不明白为什么最后有一个“1”?为什么$counter数组在最后一个循环中有一个元素?而且我也无法使用$line_of_text[0].

有谁知道为什么会这样?提前致谢!

4

2 回答 2

0

最后一次调用fgetcsv返回boolean (false)结果。当你试图计算它时,你得到 1。

我会用PHP 文件函数替换它:

$lines = file("widgets.csv");

foreach ($lines as $line) {

   $line_of_text = str_getcsv($line);

   $counter = count($line_of_text)."<br />";
   echo $counter;

   for($i=0; $i<$counter; $i++){
        echo $line_of_text[$i];
   }
    echo "<br />";

}
于 2013-01-14T08:37:04.827 回答
0

所有你需要的是

$handle = fopen("log.txt", "r");
while ( ($data = fgetcsv($handle, 1024)) !== FALSE ) {
    if(!array_filter($data))
        continue;
    $counter = count($data);
    echo "$counter <br />\n";
    echo implode(" ", $data);
    echo "<br />\n";
}
fclose($handle);

输出

4 
Widget1 blue $10 have stock
4 
Widget2 red $12 out of stock
3 
Widget3 green $14
于 2013-01-14T08:37:53.900 回答