- PR -

PHPのロジック上の質問

1
投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 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にデータを格納しているだけではないのでしょうか。。

 是非ご教授頂きたいと思います。よろしくお願い申し上げます。
giraffe
会議室デビュー日: 2002/10/03
投稿数: 10
投稿日時: 2002-12-16 22:02
fgetcsv() は fgets() と同じく、呼ばれる度にファイルポインタを進めていくだけではないでしょうか。

また「真」になる条件は、マニュアル(http://www.php.net/manual/ja/function.fgetcsv.php)によると、

引用:
fgetcsv()はファイルの終端に達した場合を含み、 エラー時にFALSEを返します。



ということなので、これ以外の時は「真」ということですね。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-12-17 08:23
 ご返答ありがとうございました。呼ばれるたびにポインタが進むことを知りませんでした。ファイルポインタの操作に関して、参考になるサイト等ございましたら是非紹介していただきたいと思います。よろしくお願いいたします。
giraffe
会議室デビュー日: 2002/10/03
投稿数: 10
投稿日時: 2002-12-18 02:31
引用:

okumuraさんの書き込み (2002-12-17 08:23) より:
 ファイルポインタの操作に関して、参考になるサイト等ございましたら是非紹介していただきたいと思います。よろしくお願いいたします。



ファイルポインタの操作に関してとなると、、、fseek() か ftell() でしょうが特に参考になるサイトというのは覚えがありません。。。
PHP は日本語マニュアルは充実していると思いますので一通り目を通されるとよいかと。

fseek() http://www.php.net/manual/ja/function.fseek.php
ftell() http://www.php.net/manual/ja/function.ftell.php
1

スキルアップ/キャリアアップ(JOB@IT)