「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
MTでPerlを学ぶ(その12・while文による繰り返し)
前回から1か月以上間が空いてしまいましたが、「MTでPerlを学ぶ」の第12回をお送りします。
今回は、while文による繰り返しを解説します。
1.条件に応じて繰り返すかどうかを判断する
前回は、for文による繰り返しを解説しました。
for文は、主に一定回数の繰り返しを行うときに使います。
ただ、繰り返しの中で、繰り返しを続けるかどうかを条件判断したい場合もあります。
例えば、一般的なプログラミングの中では、「データが見つかる間、データを読み込んで処理をする」という繰り返しを行うことがよくあります。
処理の流れを図で表すと、以下のようになります。
上の図のような例で、データを読み込んでいかないとデータの件数が確定しないとします。
となると、繰り返す回数をあらかじめ決めることができませんので、for文を使うのはあまり適切ではありません。
2.while文で繰り返しを行う
前述の図のように、繰り返しの先頭で繰り返しを続けるかどうかを条件判断し、条件を満たしている間繰り返しを続けるには、「while」という文を使います。
while文の書き方は、以下のようになります。
while (条件) { 繰り返す処理 }
例えば、上で例にあげた図をwhile文で書くと、以下のようになります。
while (データがある) { データを読み込む データを処理する }
3.例
while文を使った例として、「MTで管理しているブログの名前をすべて出力する」というプログラムを作ってみます。
実際のプログラムは以下のようになります。
use MT::Blog; print '<ul>'; my $iter = MT::Blog->load_iter; while (my $blog = $iter->()) { print '<li>' . $blog->name . '</li>'; } print '</ul>';
プログラムの内容は以下の通りです。
1行目
ブログ(MT::Blog)を操作するための「おまじない」と思っておいてください。
詳細は拙著「Movable Type Developer's Guide Volume 1」で解説しています。
3行目
リストの先頭のulタグを出力します。
4行目
ブログを順に読み込むために、変数$iterに「イテレータ」というものを作成しています。
イテレータの詳細も、拙著「Movable Type Developer's Guide Volume 1」で解説しています。
5行目
ブログを1つ読み込み、変数$blogに代入します。
ブログの読み込みに成功すると、whileの中の値は真とみなせる(=条件が成立したとみなせる)値になります。
一方、ブログをすべて読み込み終わると、変数$blogの値は偽になります(=条件が成立していないとみなせる)。
そのため、ブログを読み込み終わるまでは、while文によって繰り返しが行われます。
6行目
ブログの名前を出力します。
8行目
リストの最後の「</ul>」のタグを出力します。