読者です 読者をやめる 読者になる 読者になる

ハロトレWebデザインの勉強 | 求職者支援訓練Webサイト制作科 フェリカテクニカルアカデミー

未経験者からプロになるハロートレーニングWebデザインの勉強

PHP - 繰り返し

繰り返し(ループ)

  • 同じ処理や似たような処理を何度も行いたい場合
While文の書き方


while( 条件式 ){
  条件を満たす場合の動作
  条件判定が最終的に偽になる変更を入れる
}

<?php
$month = 1;
while ( $month <= 12 ) {
  echo $month . '';
  $month++;
}
?>


このコードでは、「1月2月・・・12月」と文字列を出力します。
$monthが、13になった時点で条件式が偽になるため処理を終了します。

whileで繰り返しを行う条件(無限ループに注意)
  1. 繰り返し処理を行う条件を記述する
  2. 繰り返し行う処理を記述する
  3. 繰り返し処理の条件が最終的に必ず偽になるようにする
「:」を使った表記法法


while( 条件式 ):
  条件を満たす場合の動作
  条件判定が最終的に偽になる変更を入れる
endwhile;

<?php
$month = 1;
while ( $month <= 12 ) :
  echo $month . '';
  $month++;
endwhile;
?>


処理の内容は変わりません。
この記述は、開始と終了の間が複雑な記述になる場合に、わかりやすくするために記述する方法です。

whileの条件を柔軟に設定する
  • whileの条件の書き方に変数を活用することで、状況にあわせてより柔軟な処理を行うことができます
<?php
$month = 1;
$end = date('n');
while ( $month <= $end ) {
  echo $month . '';
  $month++;
}
?>


date()関数の引数 n が現在の月数の数値を取得し、変数endに代入します。
これにより、前提を決めて繰り返し処理を実行できます。

WordPressでのwhileの使用例
  • 記事を取得し、記事タイトルと本文を表示する
<?php while ( have_posts() ) : the_post(); ?>

<?php the_title(); ?>
<?php the_content(); ?>

<?php endwhile; ?>


have_posts()

  • WordPress関数(投稿があるかどうかを判定する)
  • 表示する投稿を抽出したデータ内に、残りの投稿があるかどうかを判定し、投稿があれば「true」、なければ「false」を返します
  • 処理内容の最初は「the_post()」です
  • 投稿をまとめたデータから最初の投稿を取り出し、元のデータからその投稿を取り除く
  • 「the_title()」は記事タイトルを、「the_content()」は本文を表示する
  • 無限ループを防いでいるのは、「the_post()」です
  • 実行するたびに、投稿を取り出すと同時に元のデータからその投稿を取り除きます
  • 繰り返すことで、後に続く投稿を出力していき、投稿をまとめたデータを使い切ると、「have_posts()」がfalseとなってこの繰り返しが終了します