- - PR -
PHPのロジック上の質問
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-12-16 20:16
お世話になります。次にサンプルスクリプトと実行結果がありますが、その中のwhile条件文のfgetcsvという関数の動きがよくわかりません。
<CSVtest.php>------------------------------------------------- 01|<?php 02|$row = 1; 03|$fp = fopen ("test.csv","r"); 04|while ($data = fgetcsv ($fp, 1000, ",")) { 05| $num = count ($data); 06| print "<p> $num fields in line $row: <br>"; 07| $row++; 08| for ($c=0; $c < $num; $c++) { 09| print $data[$c] . "<br>"; 10| } 11|} 12|fclose ($fp); 13|?> ------------------------------------------------------- <test.csvの中身>--------------------------------------- aaa,bbb,ccc ddd,eee,fff,ggg ------------------------------------------------------- <出力結果>--------------------------------------------- 3 fields in line 1: aaa bbb ccc 4 fields in line 2: ddd eee fff ggg -------------------------------------------------------------- [質問] <CSVtest.php>内の04行目のwhile条件文内で、どうもfgetcsv関数によってtest.csvの1行目が配列$dataに格納されているようですが、どこに「1行目」を格納せよという命令があるのでしょうか。。 そして2回目のループで2行目を格納しているはずですが、「2行目」を格納するために何かをカウントアップしていてもよい感じがするのですが見当たりません。 さらにはwhile条件文で2回「真」が続いたからループが2回まわったはずなのですが、何が「真」なのでしょうか。。$dataにデータを格納しているだけではないのでしょうか。。 是非ご教授頂きたいと思います。よろしくお願い申し上げます。 | ||||
|
投稿日時: 2002-12-16 22:02
fgetcsv() は fgets() と同じく、呼ばれる度にファイルポインタを進めていくだけではないでしょうか。
また「真」になる条件は、マニュアル(http://www.php.net/manual/ja/function.fgetcsv.php)によると、
ということなので、これ以外の時は「真」ということですね。 | ||||
|
投稿日時: 2002-12-17 08:23
ご返答ありがとうございました。呼ばれるたびにポインタが進むことを知りませんでした。ファイルポインタの操作に関して、参考になるサイト等ございましたら是非紹介していただきたいと思います。よろしくお願いいたします。
| ||||
|
投稿日時: 2002-12-18 02:31
ファイルポインタの操作に関してとなると、、、fseek() か ftell() でしょうが特に参考になるサイトというのは覚えがありません。。。 PHP は日本語マニュアルは充実していると思いますので一通り目を通されるとよいかと。 fseek() http://www.php.net/manual/ja/function.fseek.php ftell() http://www.php.net/manual/ja/function.ftell.php |
1