今日もはじめるよ!
今回やることはこんな感じです。
- ループを使ってヘッダ情報を表示する
- スーパーグローバル関数 $_SERVERを利用してヘッダ情報を取得する
- 配列 array関数を使って呼び出すヘッダ情報のデータを格納
- foreach命令を使ってヘッダ情報を出力
- ヘッダ情報がどのように表示されるか確認
今日の例題 – foreach命令
お題
新規にコードを作成する
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を指定して確認。
https://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を指定して確認。
https://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 入門教室