第2日 2時限目: ヘッダ情報を覗いてみる!(ループ)

今日もはじめるよ!
今回やることはこんな感じです。

  • ループを使ってヘッダ情報を表示する
    • 今日の例題 – foreach命令

      お題

      1. スーパーグローバル関数 $_SERVERを利用してヘッダ情報を取得する
      2. 配列 array関数を使って呼び出すヘッダ情報のデータを格納
      3. foreach命令を使ってヘッダ情報を出力
      4. ヘッダ情報がどのように表示されるか確認

      新規にコードを作成する

      list_header.php
      
      <html>
      <head>
      <title>ヘッダ情報の取得</title>
      </head><body>
      <h1 style="background:#cccccc">ヘッダ情報の取得</h1>
      foreach命令<br>
      <table border="0">
      <?php
      $aryHeader=array("HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE","HTTP_REFERER");
      foreach($aryHeader as $name){
      ?>
      <tr>
      <th style="color:#FFffFF;background:#0086b2; width:80pt;">
      <?php print($name); ?></th>
      <td><?php print($_SERVER[$name]); ?></td>
      </tr>
      <?php
      }
      ?>
      </table>
      </body>
      </html>
      

      動作確認

      ブラウザで以下URLを指定して確認。
      http://5039.jp/php10/day02-2/list_header.php
      サンプル

      ギークなお姉さんは好きですか – 7日目 ヘッダ情報が見たい!知りたい!晒したい!をかなり参考にした!
      自分と同じところをやってくれているのですごくわかりやすい。ほんとありがとうございますm(_ _)m

      今回覚えておく大切なことは2つ。
      まずは、array関数。
      こいつは配列と呼ばれるもので今回の場合だと、

      array("HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE","HTTP_REFERER")

      で、arrayの中に3つのデータを格納・配列を定義している、ということみたい。

      次は、foreach。今回勉強するところの一番のキモだ。
      こいつは命令文の形式を頭に叩き込んでおく必要がある。

      【foreach命令】
      foreach(配列 as 仮変数){ … ループ内で行う処理 …}
      配列の各要素の値を仮変数にセットしつつ、ループを繰り返します。
      各要素には、この仮変数を介してアクセスすることができます。

      foreach命令では、配列内の要素を順番に「仮変数」にセットしながら、配下の処理を繰り返します。
      配列内の要素が空になったら、ループを終了します。

      ここは、ギークなお姉さんの説明が非常にわかりやすい。

      オーケー!
      ってことは、foreachというのは$aryHeader に入ってるデータを順番に $name に代入して
      { 以下を繰り返せ、って意味ね。完全に把握した。

       

      にゃるほど。この説明でおれにも完全に把握できた。(はず)

      さー今日はもうちょい頑張って、foreach以外の繰り返し構文についても見ていきます。

      まずは、コードとその説明。
      ちなみに、ここでもギークなお姉さん – 8日目 目指せ!ループマスターへの道!をがっつり参考にさせてもらってます!

      for命令

      for命令を使ったコード

      
      <table>
      <?php
      $aryHeader=array("HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE","HTTP_REFERER");
      for($i=0;$i<count($aryHeader);$i++){
      ?>
      <tr>
      <th style="color:#FFffFF;background:#0086b2; width:80pt;">
      <?php print($aryHeader[$i]); ?></th>
      <td><?php print($_SERVER[$aryHeader[$i]]); ?></td>
      </tr>
      <?php
      }
      ?>
      </table>
      

      【for命令】
      for(初期化式;終了条件;増分式){ … ループ内で行う処理 …}
      1回目のループで初期化式を実行し、変数を初期化します。
      その後、ループを1回実行するごとに増分式が実行され、終了条件がFALSEになったタイミングで処理を終了します。

      while命令

      while命令を使ったコード

      
      <table>
      <?php
      $aryHeader=array("HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE","HTTP_REFERER");
      $i=0;
      while($i<count($aryHeader)){
      ?>
      <tr>
      <th style="color:#FFffFF;background:#0086b2; width:80pt;">
      <?php print($aryHeader[$i]); ?></th>
      <td><?php print($_SERVER[$aryHeader[$i]]); ?></td>
      </tr>
      <?php
      $i++;
      }
      ?>
      </table>
      

      【while命令】
      while(条件式){ … ループ内で行う処理 …}
      条件式がTRUEの間のみループを繰り返します。(前置判断)

      do…while命令

      do…while命令を使ったコード

      
      <table>
      <?php
      $aryHeader=array("HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE","HTTP_REFERER");
      $i=0;
      do{
      ?>
      <tr>
      <th style="color:#FFffFF;background:#0086b2; width:80pt;">
      <?php print($aryHeader[$i]); ?></th>
      <td><?php print($_SERVER[$aryHeader[$i]]); ?></td>
      </tr>
      <?php
      $i++;
      }while($i<count($aryHeader));
      ?>
      </table>
      

      【do…while命令】
      do{ … ループ内で行う処理 …}while(条件式);
      条件式がTRUEの間のみループを繰り返します。(後置判断)

      動作確認

      ブラウザで以下URLを指定して確認。
      http://5039.jp/php10/day02-2/list_header_other.php
      サンプル

      for命令

      あらかじめループの回数が決まっている場合に使う。

      while命令

      前置判断で、ループが始まる前に条件式がFALSEであれば1度もループが実行されない、かつ、
      ループ内の特定の状態によってループの終了を制御したい場合に使用する。

      do…while命令

      後置判断で、ループが始まる前に条件式がFALSEであっても最低1回はループを実行、かつ、
      ループ内の特定の状態によってループの終了を制御したい場合に使用する。

      だめだ、、while命令の前置・後置判断の違いは何となくわかったが、それぞれの使い分けのイメージがよくわからねえ。。
      んー使っていくうちにわかってくるか・・・?どうだろうな、まあとりあえず今は置いておいて先へ進もう。(ーー;)

      そして、ここでも1つ勉強したことがー!
      これは覚えておかねばならない。

      コレ→$i++

      ++ 加算代入
      変数 $x の値に1を加算して代入する

      参考:ギークなお姉さんは好きですか – 6日目 クッキー受け取ってください!
      参考:演算子/PHP入門

      こいつの意味がよくわからなくてちょっと時間食っちまったが、謎は全て解けた。
      ここでもお姉さんの説明をお借りすると、

      おぉ!いまなんかキタ。
      このからくりが分かった気がする。
      初めてページを訪れた人は $times が定義されてないから0を代入。
      2回目に訪れたときは0が入ってるから、それに ++ して1にする。
      3回目に訪れたときは1が入ってるから、それに ++ して2にする・・・
      という処理が、アクセスするたびに行われてくんじゃないの?もしかして!!!

       

      ふんふん!そーだな、そーゆうことだな!
      for命令のとこだと、増分式に加算代入が入ってて初期化式が0だから、
      0から順番に1増やしていって、終了条件が2より大きくなったら(つまり3以上)、そこでループは終わりってことだ。

      count($aryHeader)

      ↑は、$aryHeader内に格納されているデータの数のことだから、この場合は3になる。
      辻褄がちゃんと合う!!
      うおおーありがてぇ〜、すげーわかりやすいよ(T T)
      こんなおれでもちゃんと理解できている!

      オーケー、オーケー。今日はここまで、ということにしておく。まーいいよな。

      次回は、3時限目として、クッキー情報の勉強っす。

      参考書:
      10日でおぼえるPHP5 入門教室



Amazonアソシエイト

スポンサーリンク

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です