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最後のループで配列に 1 つの要素があるのはなぜですか? また、 を使用して要素をエコーアウトできませんでした$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 に答える