【PHP技術者認定試験問題】制御構文(判定と繰り返し)

条件分岐

if

if (条件式) {
//条件式がtrueの場合の処理
} else {
//条件式がfalseの場合の処理
}

trueのときだけ処理を実行したい場合elseブロックは省略可能

elseif

elseifブロックを使えば多岐分岐をかくことができます。

if (条件式1) {
//条件式1がtrueの場合の処理
} elseif (条件式2) {
//条件式2がtrueの場合の処理
}
…
} else {
//条件式1、条件式2、…がいずれもfalseの場合の処理
}

複数の条件式でtrueでも最初の処理のみ実行される

switch

switch (式) {
case 値1 :
//式 == 値1の場合の処理
  break;
case 値2 :
//式 == 値2の場合の処理
  break;
…
default :
//式が値1、2、…がいずれでもない場合の処理
  break;
}

複数の条件式でtrueでも最初の処理のみ実行される

match

match(式) {
値1 => 式1,
値2 => 式2,
…
default => 式N
}

繰り返し処理

while

while (条件式)  {
// 条件式がtrueである限り実行する処理
}
do {
// 条件式がtrueである限り実行する処理
} while (条件式);

後置判定のため、条件判定に関わらず処理は1回実行

for

for (初期化式; 継続条件式; 増減式) {
// ループ内で実行する処理
}

continue

continue命令は周回をスキップさせるときに使います。

<?php
$sum = 0;
for ($i = 1; $i <=10; $i++) {
if ($i % 2 !== 0) { continue; }
$sum += $i;
}
print $sum; // 25

foreach

foreach (配列 as 値変数) {
// ループ内で実行する処理
}
foreach (連想配列 as キー変数 => 値変数) {
// ループ内で実行する処理
}
1~100までの偶数の合計
$sum = 0;
1 ($i = 1; $i <= 100; $i++) {
2 ($i % 2 ===0) { 3 }
$sum += $i;
}
$sum = 0;
for ($i = 1; $i <= 100; $i++) {
  if ($i % 2 ===0) { continue; }
  $sum += $i;
}
・現在のループを強制的に中断する命令
・現在の周回だけスキップし、ループは継続する命令
  • break
  • continue
$rank = ‘上’;
$result = 1($rank) {
‘上’ 2 ‘大変良い’,
‘中’ 2 ‘良い’,
‘下’ 2 ‘悪い’,
3 => ‘???’
};
$rank = '上';
$result = match($rank) {
  '上' => '大変良い',
  '中' => '良い',
  '下' => '悪い',
  default => '???'
};