2013年2月10日日曜日

ドットインストール PHPの基礎③


三項演算子(条件演算子)

まず普通に条件分岐を書くと

$age = 20;

if ($age > 20) {
    $massage = “大人”;
} else {
    $massage = “子供”;
}
   となるのですが

   同じことを三項演算子を用いて書くと

    $message = ($age > 20) ? “大人” : “子供” ;
   となるので便利です

条件分岐(switch
 選択肢があらかじめ決まっていて条件に応じて振り分けたい場合に使う

 〜書き方〜
case 条件:
 命令文
break;

 因にdefaultは例外処理

 〜例〜
 $signal(ここでは信号の色)が
 赤だったら「止まれ」
 緑なら「進め」
 黄色なら「注意」
 を表示する命令を書いている。
 caseの後ろに変数の値の条件を書き、
 コロンからbreakまでを実行する。
 
  $signal = "green";
   switch($signal){
               case "red" :
               echo "止まれ";
               break;
               case "blue" :
               case "green":  //条件が二つある時はcaseを二つ並べてから命令
               echo "進め";
               break;
               case "yellow" :
               echo "注意";
               break;   default :
               echo "わからない";
               break;
  }               


文字列に関する関数
 printf() -> フォーマット化された文字列を返す

  〜例〜
  we have 40 bananas for $5.23と表示させたい場合

   $s = "banana";
   $n = 40;
   $p = 5.30;

  printf("we have %d %ss for $%f", $n, $s, $p);
  “%”オプション“で変数を代入できる

  オプションの意味は

   %d -> 整数値
   %ss -> 文字列
   %f -> 小数値

  さらにオプションと%の間に数字を入れることで桁数を指定できる
   %.2f 小数点以下に桁
   %5d  五桁
   %05d 5桁だけれども5桁に見た無い場合は0で埋めてくれる
 関数sprintf() -> 機能はprintf()と同じだけど、値を返してくれる
                 $変数名 = sprintf()
                 という風に変数に格納することもできる

配列に関する関数
 array(“要素”,”要素”,”要素”) -> 配列を格納する
 count(変数名) -> 配列の要素数を返してくれる
 sort(変数名) -> 配列をアルファベット順に並べてくれる
 in_array("要素", "配列を格納した変数名”) -> 配列に要素があるか判定
 implode(“区切り文字”, 配列変数名) -> 配列を区切り文字を使って表示
  explode("区切り文字", 文字列変数名) -> 文字列を特定の文字で区切って配列に変換

 〜例〜
  $members = array("tanaka", "Sasaki", "kuma", "yoshida", "uchida");

  //count 要素の数を返してくれる
  echo count($members);

  //sort アルファベット順に並べてくれる
  sort($members);
  var_dump($members);

  //in_array 配列にはいっているかどうか調べる
  if (in_array("tanaka", "$members)){
                echo "Bingo!"
  };

  //implode 配列の中身を何らかの区切り文字を使って表示したい
  //explode何かの文字で区切って配列にする
  $atstr = implode("@", $members);
  var_dump(explode("@", $atstra));

日付や時間に関する関数
  unixタイムスタンプ
  (1970/1/1 00:00:00からの経過秒数)

  time() -> 現在時刻のユニックスタイムスタンプ
   mktime(,,,,,) ->特定日付のユニックスタイムスタンプ
   strtotime() ->日付っぽい文字列からタイムスタンプを作ってくれる
              例 strtotime("last Sunday")
   echo date("フォーマット", タイムスタンプ") ->タイムスタンプを特定のフォーマットに直す
 

ファイルの読み書き

 test.dat
 パーミッション 
 読み書く×3
 <?php


 $testFile = "test.dat";
 $contents = "こんにちは";

 if(is_writable($testFile)){ //書き込み可能かチェック
 //ファイルをオープンできたか? fopenopen aは今あるファイルの末尾にデータを加える
 //ファイルポインタリソースが帰ってくる
 //整理券みたいなもの
 if(!$fp= fopen($testFile, "a")){//fpがフォルスだったら
 echo "could not open";
 exit;
 }
 //書き込めたか??

 if(fwrite($fp, $contents)===false){//===は型も値も同じ
 echo "could not write";
 exit;
 }
 echo "success";
 fclose($fp);
 }else{
 echo "could not writable";//書き込み可能でなければexit

 exit;
 }

ファイルからデータを読み出そう
 $testFile = "test.dat";

 if(!$fp = fopen($testFile, "r")){
                echo "could not open";
                exit;
 }

 $contents = fread($fp, filesize($testFile));

 var_dump($contents);

 fclose($fp);


もっと簡単にできる

 $testFile = "test.dat";

 $contents = file_get_contents(ファイル名); //ファイルの中身を読み込む
 $contents = file_get_contents("URL");//ソースコードをとってくる
 $contents = file($testFile);//ファイルの中身をよみこんで一行ごとに入れに突っ込む
 var_dump($contents);

フォームからのデータを受け取ろう

 <?php

 $birthday =$_POST['birthday']

 $youbi = date("l", strtotime($birthday));

 ?>

 <!DOCTYPE html>
 <html lang="ja">
 <head>
 <meta charset="UTF-8" />
 <title>PHPの練習</title>
 </head>
 <body>
 <h1>PHPの練習</h1>
 <p><?php echo htmlspecialchars($youbi); ?></p>
 </body>
 </html>

 index.htmlソース
 <!DOCTYPE html>
 <html lang="ja">
 <head>
 <meta charset="UTF-8" />
 <title>PHPの練習</title>
 </head>
 <body>
 <h1>phpの練習</h1>
 <form action ="get_info.php" method = "post">
 <input type="text" name="birthday" value ="">
 <input type="submit" value="送信">
 </form>
 </body> 
 </html>

0 件のコメント:

コメントを投稿