データ入出力
データ入出力
1. プログラム例
<?php
// テキストファイルを読み込むプログラム
header("Content-Type: text/plain; charset=X-SJIS");
$fp = fopen("sample.txt", "r");
$num=0;
while(fscanf($fp, "%d %d %f", $name, $popu, $area) > 0) {
printf ("%d,\t%d,\t%5.1f\n", $name, $popu, $area);
$num ++;
}
fclose($fp);
?>
このプログラムは"sample.txt"というテキストファイルを読み込む.このファイルは,県別人口とその面積(km2)のデータが納められている.
上記テキストファイルをPHPプログラムと同じディレクトリに保存して使う.
2. fopen文の文法
$fp = fopen("ファイル名", "モード");
ファイル名で指定されたファイルをモードに従って操作可能な状態にする.
モードについて
* r 読み込み用
* w 書き込み用
fopen文の戻り値は,オープンされたファイルのストリームとなり,この例の場合,$fpの変数に代入される.
ファイルの操作を終えたなら,fclose($fp); によって終了させる.
3. fscanf文の文法
fscanf(ストリーム, "フォーマット", 変数リスト);
フォーマットに従って,ストリームの指し示すファイルより変数に値を入力する.
フォーマットについて
%d 整数型の変数
%f 実数型の変数
%s 文字列型の変数
スペースやタブで区切られた2つの変数を一度に入力する場合は,"%d %d"として読み込む.
変数リストについて
2つ以上の変数に入力する時は,コンマで区切って並べる.
フォーマットと,変数の型がちゃんと対応するように記述しなければ,入力された値はおかしなことになってしまう.要注意!
fscanf文の戻り値は,読み込まれたデータの数となる.
したがって,ファイルに読み込むデータが無くなったときは,0を返す.
4. while文の文法
while(式) { }
式の値が真の間,繰り返し処理を行う.
この例題の意味は,fscan()の関数の戻り値が0より大きい場合,つまり読み込むデータが無くなるまで繰り返し処理される.
総人口と総面積(km2)そして日本全体での人口密度を算出するプログラムを完成させなさい.
出力は,最後の行に以下の形式で出力されるものとする.
Overall Population = ○○○○○
Gross Area = ○○○.○○ km2
Density of Population = ○○○.○○ popu. / km2
変更したプログラムは,"p05.php"という名前で保存しなさい.
保存場所は,~/local_html/Program/p05.php
このプログラムをWebブラウザで確認しなさい.
課題