Problemet med icke-obligatoriska klammerparenteser i villkor i PHP
Trots att PHP tillåter de ovan visade förkortningarna med klammerparenteser, rekommenderar jag generellt sett inte att göra så, eftersom det är en ypperlig grogrund för svårfångade fel.
Låt oss till exempel ha följande kod:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Låt oss nu säga att vi bestämde oss för att, i det fall
villkoret uppfylls, göra ytterligare en
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Emellertid, utan klammerparenteser, befinner sig bara det första utskriften inuti villkoret, det vill säga den första utskriften kommer att aktiveras om villkoret är sant, medan den andra - alltid.
Vår kod är faktiskt ekvivalent med denna:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // denna rad hamnade utanför villkoret
?>
Medan vi skulle vilja ha denna kod:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // denna rad är inuti villkoret
}
?>
Det är just därför det rekommenderas att alltid använda klammerparenteser, för att undvika att råka ut för den här typen av fel.
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>