PHPのループ処理

for()やwhile()などループにも色々とある。

作成日:2017-12-04, 更新日:2017-12-04

基本

おおざっぱに言うと、下記の2タイプある。
・条件を満たす間、繰り返す。
・配列(オブジェクト)がある限り、繰り返す。

条件を満たす間、繰り返す

for()

for ($i=0; $i<10; $i++) {
  ~処理~
}

上記は
・「$i」の初期値は「0」
・「$iが10未満」のとき、処理実行
・処理後、「$i」を「+1」
のような処理。

while()

「while (条件){}」で「条件が真なら実行」となる。
そのため、「条件が偽」のときはループ処理が走らないコトもある。

$flag = true;
while ($flag) {
  ~処理~
  
  if (条件) {
     $flag = false;
  }
}

上記は
・「$flag」が「true」の間、処理実行。
※無限ループに陥りやすいので回数指定したほうがいいかも。

▼無限ループ対策に回数指定を追加

$i = 0;
$flag = true;
while ($flag) {
  ~処理~
  
  if (条件 || 10<$i) {
     $flag = false;
  }
  $i++;
}

do-while()

「while()」は「条件が真なら実行」となるが、「do-while()」はひとまずループ処理実行って形になる。
※「while()」同様、無限ループに陥りやすいので回数指定したほうがいいかも。

$i = 0;
$flag = true;
do {
  ~処理~
  
  if (条件 || 10<$i) {
     $flag = false;
  }
  $i++;
}
while ($flag);

違い:while()とdo-while()

似たようなループ処理。

・「while()」は、条件チェックをしてから、ループ処理。
・「do-while()」は、ループ処理をしてから、条件チェック。

▼while():条件チェック(while ($flag))→「$i++」が走らない→「$i」は「0」

$i = 0;
$flag = false;
while ($flag) {
  $i++;
  $flag = false;
}
echo $i;

▼do-while():「$i++」が実行→条件チェック(while ($flag))→「$i」は「1」

$i = 0;
$flag = false;
do {
  $i++;
  $flag = false;
}
while ($flag);
echo $i;

配列(オブジェクト)がある限り、繰り返す

foreach()

ループ内でキー(添え字)不要、値のみ使う

$ary = array(〇〇〇, 〇〇〇, 〇〇〇, 〇〇〇, 〇〇〇);
foreach ($ary as $val) {
   echo '値:' . $val . "\n";
}

ループ内でキー(添え字)必要、値も使う

$ary = array(
   □□□ => 〇〇〇,
   □□□ => 〇〇〇,
   □□□ => 〇〇〇,
);
foreach ($ary as $key=>$val) {
   echo 'キー(添え字):' . $key . "\n";
   echo '値:'             . $val . "\n";
}