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

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

  • Posted by: kajichenkoh
  • 2008年4月 3日 12:25
  • php
  • ReTweet This! Facebookでシェアする このエントリーを含むはてなブックマーク このエントリーのはてなブックマーク被リンク数

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

今日の例題 - 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 入門教室

  • このエントリーをブックマークする⇒ このエントリーを含むはてなブックマーク このエントリーのはてなブックマーク被リンク数
  • このエントリーをTwitterでコメントする⇒ ReTweet This!
  • このエントリーをGoogleBuzzでコメントする⇒

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。


画像の中に見える文字を入力してください。

Trackbacks:0

TrackBack URL for this entry
http://5039.jp/blog/mt-tb.cgi/27
Listed below are links to weblogs that reference
第2日 2時限目: ヘッダ情報を覗いてみる!(ループ) from 5039 blog

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

Search
Feeds
Twitter
    follow me on Twitter
    Friends
    More On This Blogger
    Add to Technorati Favorites
    Parts
    あわせて読みたいブログパーツ
    Mutual Link

    Return to page top