2012年10月12日金曜日

PHPのお勉強

PHPの開発環境を構築してから、ずっとほったらかしにしていて昨日今日で少し学習しました。
昨日はPHPとはなにかから始まり、ずっと基礎を勉強してファイル入出力ができるようになりました。約90分かかりました。

C言語の基礎がわかっていれば、基礎の勉強はあまりおもしろくないかもしれません。
PHPの基礎の勉強を初めて新しく覚えたのは三項演算子とforeach文の書き方、連想配列くらいです。

そこで、今日はファイル入出力を使って外部ファイルに簡易DBを構築できないかということで検討してみました。

まずfopen/fwrite/freadを使って、csvファイルに書き込んだり、読み込んだりしました。

例えばcsvの中身が
1,2,3,_
1,2,3,_
となっていた時(アンダーバーは改行です)
freadを使うとString型で1,2,3,_1,2,3,_という読み込み結果になります。
これをexplode(",",$foo)を使ってカンマごとに配列化することができますが、その後の扱いが大変。

そこでPHPで用意されているcsv用の関数を使います。いくつかの関数が用意されていますが、今回はfgetcsv関数を使います。

以下今回使ったソースです。
<?php
 $testFile = "test.csv";
 $contents[]= "";
 
 if(!$fp = fopen($testFile,"r")){
  echo "cannot open ";
  exit;
 }
 $row = sizeof(file("$testFile"));//行数の取得
 for($i=1; $i <= $row; $i++){
  $contents[$i] = fgetcsv($fp,",");
  echo $contents[$i][0],",",$contents[$i][1],",",$contents[$i][2],"</br>";
 }
 fclose($fp);

これで、csvファイルの中身を二次元配列に読み込むことができます。
しかしながら、日本語(マルチバイト文字)を文字化けせずに表示させるためには、
ロケールを設定しないといけないようです。

それにしてもブログにソース載せるときに綺麗にできるような何かは無いのか…
ブログ巡回すると大抵の人がつかっているアレを導入したい。

追記:
SyntaxHighlighterというのを使うと綺麗にできました。

0 件のコメント:

コメントを投稿