PHP 条件分岐まとめ
目次
If文
<?php
$A = 5;
$B = 3;
echo "\$A = " . $A . " \$B = " . $B . "<br />";
if ($A > $B) {
echo "A > Bです。";
} else {
echo "A > Bではないです。";
}
?>
もしくは
<?php
$A = 5;
$B = 3;
echo "\$A = " . $A . " \$B = " . $B . "<br />";
if ($A > $B) : ?>
<p>A > Bです。</p>
<?php else : ?>
<p>A > Bではないです。</p>
<?php endif; ?>
実行結果
$A = 5 $B = 3
A > Bです。
while文
<?php
$A = 5;
$B = 3;
while ($A > $B) {
echo "\$A = " . $A . " \$B = " . $B . "<br />";
echo "A > Bです。<br />";
$B++; // Bの値を1増やす。
}
?>
もしくは
<?php
$A = 5;
$B = 3;
while ($A > $B) : ?>
<p>$A = <?php echo $A; ?>$B = <?php echo $B; ?></p>
<p>A > Bです。</p>
<?php $B++; // 無限ループ対策。$Bの値を1増やす。
endwhile; ?>
while文の条件である$A > $Bがtrueの限り無限ループになります。
実行結果
$A = 5$B = 3
A > Bです。
$A = 5$B = 4
A > Bです。
foreach文
<?php
$A = array(1,2,3,4,5);
foreach ($A as $B) { // $Aの中に配列があれば
echo $B . "<br />";
}
?>
もしくは
<?php
$A = array(1,2,3,4,5);
foreach ($A as $B) : // $Aの中に配列があれば ?>
<p><?php echo $B; ?></p>
<?php endforeach; ?>
実行結果
1
2
3
4
5
このような配列でも処理出来ます。
<?php
$A = array(
'aaa' => 'あああ',
'bbb' => 'いいい',
'ccc' => 'ううう',
'ddd' => 'えええ',
'eee' => 'おおお'
);
$B = array_keys($A);
foreach ($B as $C) : // $Bの中に配列があれば ?>
<p><?php echo $C; ?></p>
<?php endforeach; ?>
実行結果
aaa
bbb
ccc
ddd
eee
配列のkeyの値を取得しています。(通常はvalueの値を取得します。)
do~while文
do~while文はwhile文とほぼ同じですが、条件の一致・不一致は問わずに最初の1回だけは実行されます。
<?php
$A = 5;
$B = 30;
echo "\$A = " . $A . " \$B = " . $B . "<br />";
do {
echo "A > Bです。";
$B++;
} while ($A > $B);
?>
実行結果
$A = 5 $B = 30
A > Bです。
A > Bという条件はfalseなので、最初の1回だけ実行されています。
for文
while文と同じくループ処理を行います。予めループ回数が決まっている際などに用いられます。
<?php
for ($i = 0; $i < 10; $i++) {
echo $i . " ループ継続。<br />";
}
?>
もしくは
<?php for ($i = 0; $i < 10; $i++) : ?>
<p><?php echo $i; ?> ループ継続。</p>
<?php endfor; ?>
実行結果
0 ループ継続。
1 ループ継続。
2 ループ継続。
3 ループ継続。
4 ループ継続。
5 ループ継続。
6 ループ継続。
7 ループ継続。
8 ループ継続。
9 ループ継続。
switch文
<?php
$A = rand(1,4); // 1~4の数字をランダム
switch ($A) {
case 1 :
echo "数字は1です。";
break;
case 2 :
echo "数字は2です。";
break;
case 3 :
echo "数字は3です。";
break;
case 4 :
echo "数字は4です。";
break;
}
?>
もしくは
<?php
$A = rand(1,4); // 1~4の数字をランダム
switch ($A) :
case 1 : ?>
<p>数字は1です。</p>
<?php break;
case 2 : ?>
<p>数字は2です。</p>
<?php break;
case 3 : ?>
<p>数字は3です。</p>
<?php break;
case 4 : ?>
<p>数字は4です。</p>
<?php break;
endswitch;
?>
caseの最後には毎回breakが必要となります。
実行結果
数字は4です。
条件分岐は数字ではなく文字でもできます。
<?php
$A = array("aaa","bbb","ccc","ddd"); // 文字列を配列に格納。
$B = array_rand($A); // $Aの配列からランダムに取り出す。
switch ($A[$B]) {
case "aaa" :
echo "文字列はaaaです。";
break;
case "bbb" :
echo "文字列はbbbです。";
break;
case "ccc" :
echo "文字列はcccです。";
break;
case "ddd" :
echo "文字列はdddです。";
break;
}
?>
実行結果
文字列はdddです。
文字列で分岐させる場合はcaseの値をダブルクォーテーション(")で囲む必要があります。
break
switch構文に登場したbreakですが、これは実行中のwhile, do while, for, foreach, switchの処理を抜けるために使用します。
最も内側のループ処理を抜けるため、複数のループから抜け出したい場合は、このように記述します。
break n;
nには数字が入ります。
<?php
$A = 1;
while (1) { // while (1)は無限ループです。
while (1) {
if ($A == 10) { // $Aが10になったらループ終了。
break 2; // 内側のwhileと外側のwhileの両方を終了させています。
}
echo "\$A = " . $A . "です。<br />";
$A++; // Aの値を1増やす。
}
echo "aaa"; // break 1だと表示されます。
break;
}
?>
実行結果
$A = 1です。
$A = 2です。
$A = 3です。
$A = 4です。
$A = 5です。
$A = 6です。
$A = 7です。
$A = 8です。
$A = 9です。
continue
breakはループ処理自体を終了させるための構文ですが、continueはループ処理を1回だけスキップさせる構文です。
<?php
$A = 1;
while (1) { // while (1)は無限ループです。
$A++; // Bの値を1増やす。
if ($A == 30) {
break; // $Aが30を超えたらループ終了。
} elseif ($A % 2 !== 0) {
continue; // 奇数の場合スキップ。
}
echo "\$A = " . $A . "です。<br />";
}
?>
実行結果
$A = 2です。
$A = 4です。
$A = 6です。
$A = 8です。
$A = 10です。
$A = 12です。
$A = 14です。
$A = 16です。
$A = 18です。
$A = 20です。
$A = 22です。
$A = 24です。
$A = 26です。
$A = 28です。