Problém nepovinnosti složených závorek v podmínkách v PHP
Přestože PHP umožňuje výše uvedená zkrácení se složenými závorkami, já je obecně nedoporučuji, protože jsou živnou půdou pro těžko postižitelné chyby.
Předpokládejme například následující kód:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Předpokládejme nyní, že jsme se rozhodli v případě, že
je podmínka splněna, provést také druhý
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Avšak bez složených závorek je uvnitř podmínky pouze první výpis, to znamená, že první výpis se spustí při splněné podmínce, a druhý - vždy.
Náš kód je ve skutečnosti ekvivalentní tomuto:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // tento řádek se ocitl mimo podmínku
?>
Ale my bychom chtěli takový kód:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // tento řádek je uvnitř podmínky
}
?>
Právě proto se doporučuje vždy provádět umístění složených závorek, abyste neupadli do chyb tohoto druhu.
Bez spuštění kódu určete, co se vypíše na obrazovku:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Bez spuštění kódu určete, co se vypíše na obrazovku:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Bez spuštění kódu určete, co se vypíše na obrazovku:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>