日記
うわあああぁぁぁぁぁあああ!!!!
ナイスーなギークにゴイスーなツールもらった!!!!!!!
ギークなお姉さんのPHPソースコンバーター
ギークなお姉さんのPHPソースコンバーターは、
ギークなお姉さんが自分で書いたPHPのソースをアップロードすると、
そのソースをdtiブログに投稿しやすいようにタグを書き換えたり、
行番号を付け足してくれる、ただそれだけのツールです。
by ギークな(?)バスケットマン tetsunosuke
ちょ!!それだけって!!!それ以上なにを求めるというの!!!???
欲しがりません勝つまでは!!!!!
かみさま。私になにができますか。
どうすれば tetsunosuke さんは喜んでくれますか。
私は tetsunosuke さんを幸せにしたい。する!してみせる!!
そうだ。ギークになろう。
今のところ、それ以外の誠意の示し方を知らない。
とゆことで。よーし、べに特盛で頑張っちゃうぞー!
ここは本当におめでてーいんたーねっとですにょ^^^^^^
繰り返し構文を学ぼう
ヘッダ情報の取得の時に覚えた繰り返し構文。
前回は foreach という関数を使ったけど、繰り返し構文は他にもある。
PHPには、foreach命令のほかにも、繰り返しループを実現するための構文として、
for、while、do...whileという3つの構文が用意されています。
foreach命令が配列の要素数に基づいてループの終了を判定するのに対して、
for命令はあらかじめ指定された繰り返し回数で、while、do...while命令は
条件式の真偽(TRUE/FALSE)によってループの終了を判定します。
参考:10日でおぼえるPHP5 入門教室
foreach は前回やったので省略。
今回は for、while、do...while の3つに迫る。
この ”迫る”って表現はドキュメンタリーぽくてカコイイので、これからちょくちょく使おうと思う。
ではさっそく迫ろう。
これは上で挙げた参考書の説明が分かりやすかったので、以下それを引用する。
【for命令】
for(初期化式;終了条件;増分式){...ループ内で処理する処理...}
1回目のループで初期化式を実行し、変数を初期化します。
その後、ループを1回実行するごとに増分式が実行され、終了条件がFALSEになった
タイミングで処理を終了します。
【while命令】
while(条件式){ループ内で処理する処理...}
条件式がTRUEの間のみループを繰り返します(前置判断)。
【do...while命令】
do{...ループ内で処理する処理...}while(条件式);
条件式がTRUEの間のみループを繰り返します(後置判断)。
はぁ。Lovecall The Typing Girl って感じだった。参考書コピペ乙。
一応説明したけど、日本語よりソースコードの方が分かりやすいよね♪(←ギーク発言!!
ってことで、実際に書いて動かしてみる。
ヘッダ情報の取得の foreach 部分だけ書き換える。
まずは該当部分のソースを貼る。
※タグの最初は全角にしてあります。
8 foreach($aryHeader as $name){
9
10 :(PHP終了タグとhtml部分中略)
11
12 <?php print($name); ?></th>
13 <td><?php print($_SERVER[$name]); ?></td>
14
15 :(html部分とPHP開始タグ中略)
16 }
サンプル:list_header.php
うん。
foreach は変数 $aryHeader に入ってるデータを順番に $name に代入して、
入れるデータがなくなったら繰り返し終了の構文。大丈夫、覚えてる。
参考:7日目 ヘッダ情報が見たい!知りたい!晒したい!
これをまず、for で書き換えてみよう。
8 for($i=0;$i<count($aryHeader);$i++){
9
10 :(PHP終了タグとhtml部分中略
11
12 <?php print($aryHeader[$i]); ?></th>
13 <td><?php print($_SERVER[$aryHeader[$i]]); ?></td>
14
15 :(html部分とPHP開始タグ中略)
16 }
8行目。
(カッコ)内は初期化式;終了条件;増分式の順で並んでる、と前述の説明にあった。
最初に $i に 0 を代入して初期化。
次の count は初めてだ。
count命令は、指定された配列に含まれる要素の数(ここでは3)を返します。
OK。
参考書によると ”終了条件が FALSE になったタイミングで処理を終了” とのこと。
つまり、$i が 3 より小さい、という条件が成り立たなくなったら処理を終了しろってことね。
最後の $i++ は、$i に 1 を加算して代入するという意味。
参考:6日目 クッキー受け取ってください!
よし。問題ない。全く問題ない。
12行目。
$aryHeader[$i] を Print しろ、と言ってる。
8行目の for 以下で指示した通り、最初は $i に 0 が入ってる。
で、++ 効果で2回目は1、3回目は2が入る。
それ以降は $i<count が成り立たなくなるのでココで終了。
よし。ちっとも不思議じゃない。予想通りだ。
13行目。
$_SERVER[$aryHeader[$i]] を Print しろ、と言ってる。
[カッコ]が二重になっててイラっとするけど、怒ってはいけない。
これは確か、内側から評価するんだった。
$aryHeader[$i] については上で書いた通り。
ってことは、それを $_SERVER で取得すればいいだけ。
なんだ、分かるじゃん。
12行目と連動してるので、コレも3回目で終了。
やってみよう。
完全に問題ない。
サンプル:header_for.php
今度は while で書き換える。
8 $i=0;
9 while($i<count($aryHeader)){
10
11 :(PHP終了タグとhtml部分中略)
12
13 <?php print($aryHeader[$i]); ?></th>
14 <td><?php print($_SERVER[$aryHeader[$i]]); ?></td>
15
16 :(html部分とPHP開始タグ中略)
17 $i++;
18 }
while は(カッコ)内が成り立つ限り繰り返す。
つまり、$i が 3 より小さいうちはずっと処理する。
処理する内容は{ 以下の通り。
(しつこくGIGAZINE風)
13,14行目は for の時と一緒なので省略。
で、17行目で $i に ++ してる。
これも ++ されて $i が 3 以下じゃなくなったら終了。
パーペキに無問題だ。
サンプル:header_while.php
最後は do...while。
8 $i=0;
9 do{
10
11 :(PHP終了タグとhtml部分中略)
12
13 <?php print($aryHeader[$i]); ?></th>
14 <td><?php print($_SERVER[$aryHeader[$i]]); ?></td>
15
16 :(html部分とPHP開始タグ中略)
17 $i++;
18 }while($i<count($aryHeader));
ふむ。
さっきとちょっと違う。
9行目。
まず「しろ!」と言ってる。
何を?13〜17行目までの処理を。
上と一緒ね。
んで、18行目で「もしアレだったら繰り返してね^^」と言ってる。
アレの内容を具体的に言うと、$i が 3 以下なら、ってこと。
while が最初に 「$i が 3 以下なら繰り返せ」って言うのに対して、
do...while は後出しだ。
つべこべ言わずに、とりあえず1回は処理させる。
処理させたあとで「条件が許す限りリピートしてね☆」と言ってくる。
商売上手だな!どうだろう。
そういう問題だろうか。
おっけい♪
繰り返し構文はマスターした。
忘れないように do{復習}while(ギークになるまで); な感じでがむばろーっと!