練習問題

10.8 練習問題 解答

問1

① ○:クローズ処理はメイン処理に影響しないが、できる限りクローズする方がいい。
② ×:追加書き込みモード「a」もあります。
③ ○:カンマ区切りデータを分割して、配列データとして扱いたい場合fgetcsv関数も利用できます。
④ ×:ファイルの状態ではプログラムが動作し ないので事前確認は行う方がいい。
⑤ ×:POST送信でしか行えない。

問2

practice1001.php

解説

8行目でファイルを読み込みモードでオープンします。
11行目のwhile文とfeof関数を組み合わせてファイルの終端まで、つまり、全データを読み込むまで繰り返す処理になっています。
13行目でファイルの1行データをfgetcsv関数を使って配列データとして取得しています。
15行目では読み込んだデータがヘッダー行(Name,age)かを条件文で判定し、ヘッダー行ならcontinueで画面に表示する処理をスキップして次のデータ読み込みへ進みます。
24行目でファイルデータの読み込みが全て終わったので、オープンしたファイルのクローズ処理を行っています。

問3

practice1002.php

解説

11と14行目で読み込みファイルと書き込みファイルのオープンを行います。17行目で読み込んだファイルデータを繰り返し文を使って全て読み込みます。その繰り返し内では、ヘッダー行を読み飛ばし、各読み込んだ1行データを「名前(年齢)」の形式で書き込んでいきます。その際に、29行目で変数$totalに年齢データを加算し、32行目で変数$countをインクリメントしていきます。
読み込み処理が全て終わった後の36行目で、合計人数「$countの値」をファイルへ書き込みます。合計人数とは「データを読み込んだ数=ループの回った数=$countをインクリメントした数」になります。
次の39行目で平均年齢を「年齢の合計÷合計人数($total/$count)」で計算した結果をファイルへ書き込んでいます。最後に2つのファイルをクローズして、画面にメッセージを出力して終了になります。

問4

①ファイルが存在し、読み込み可能か確認する。:is_readable
②ファイルが存在し、書き込み可能が確認する。:is_writable
③ファイルが存在するか確認する。:file_exists

NEXT>> 第11章 クッキーとセッションを利用しよう