8日目 目指せ!ループマスターへの道!

  • 2007/12/14(金) 00:00:00

日記

うわあああぁぁぁぁぁあああ!!!!
ナイスーなギークにゴイスーなツールもらった!!!!!!!


ギークなお姉さんの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(ギークになるまで); な感じでがむばろーっと!


LINEで送る

この記事に対するトラックバック

この記事のトラックバックURL

PHPで作るチョコレートマフィンのレシピ

e-165祝電 藤本さん、お誕生日おめでとでした♪ e-241日記 こんにちワールド! ギークの皆さん、やっと終わったと安心しているところを蒸し返すようで恐縮ですが、 今年のバレンタインはいかがでしたか!?いえ、いいんです。どうか皆まで言わないで...

[プライベート]体調が不良になった

死ぬかと思った、というより、死ぬんだと思った。 といったところで、高度にスルー力が発達した君たちが相手じゃ 適当に流されそうなので、緊迫感を伝えるためにイメージ動画を貼るよ。 このダムは絶対、お前らの好きにはさせない・・っ。 実際、こんな感じで闘っていた。私

9日目 カレンダを作ルンダ♪

e-241 日記 あけましておめでとうございますー!    書初めを写メでうpって、アナログとハイテクのコラボレーションって感じでなんかいいよね! アナログとハイテクはもっと仲良くすればいい。 大晦日&元旦は、田口さん・いとまささん・けんす

PHPを使ってMySQLを操る

e-149 MySQLデータベースをPHPで呼び出そう 前回作ったデータベースを、コマンドプロンプトの画面ではなく、ブラウザ上で見れるようにする。 e-117 前回:MySQLはじめの一歩 - データベースを作る まずはソースから。 ※下記コード及び解説は、『M

この記事に対するコメント

Theoria Laevatainさんへ

まあそれってhtmlspecialcharsとかで一発だしとか。
タグとか自由に貼れないかも?って思って、
現状のスタイルを踏襲しました。
#でも考えてみれば多分自由に貼れるんだよね。

改造はできるように(たいしたソースじゃないので)コメント付きで、
べにぢょさんにはお渡ししています:-)
あえて過去の学習内容を極力使うように書いてみたのです。

とんがったカッコ(不等号)と実体参照について

はじめまして。いつも楽しく拝見させてもらっています。

御存知かも知れませんが、本文に HTML タグをそのまま表示させる方法があります。 < を &lt; と > を &gt; などと書くと、 HTML タグの一部と解釈されません。このように & で始まって ; で終わる表記は文字参照や実体参照などと呼ばれています(XML と HTML で呼び方が異なる)。

詳しくは以下の文献が参考になるかと思います。
http://diary.noasobi.net/flyson/xhtml_ref/xhtmlcharent.html
http://tinyurl.com/2rs6ex

ソースコンバーターが手に入ったとのことですが、手元にそのソースコードがあるのでしたら、自動でカッコを変換する機能を追加してみては如何でしょうか。勉強になるかと思いますよ。

この記事にコメントする

管理者にだけ表示を許可する