PHPの条件文における中括弧の省略に関する問題
PHPでは上記のように中括弧を省略した記述が可能ですが、一般的にはそのように記述することをお勧めしません。なぜなら、これは見つけにくいエラーの温床となるからです。
例えば、次のようなコードがあるとします:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
ここで、条件が真の場合に2つ目のechoも行いたいと決めたとします:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
しかし、中括弧がない場合、条件の内部にあるのは最初の出力文のみです。つまり、最初の出力は条件が真の場合に実行され、2つ目の出力は常に実行されます。
実際、このコードは次のものと同等です:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // この行は条件の外側にきてしまった
?>
本来私たちが意図したコードは、おそらく次のようなものです:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // この行は条件の内側
}
?>
この種のエラーに陥らないために、常に中括弧を記述することが推奨されています。
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
コードを実行せずに、画面に何が表示されるか判断してください:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>