Het probleem van de optionele accolades in voorwaarden in PHP
Ondanks het feit dat PHP de hierboven getoonde verkortingen met accolades toestaat, raad ik dit over het algemeen niet aan, omdat het een broedplaats is voor moeilijk te vinden fouten.
Stel dat we de volgende code hebben:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Stel dat we nu besloten hebben, als aan de
voorwaarde is voldaan, ook een tweede
echo uit te voeren:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Echter, zonder accolades bevindt alleen de eerste uitvoer zich binnen de voorwaarde, dat wil zeggen dat de eerste uitvoer wordt uitgevoerd als de voorwaarde waar is, en de tweede - altijd.
Feitelijk is onze code equivalent aan deze:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // deze regel bleek buiten de voorwaarde te staan
?>
Terwijl we deze code wilden:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // deze regel staat binnen de voorwaarde
}
?>
Daarom is het aanbevolen om altijd accolades te plaatsen, om niet in dit soort fouten te trappen.
Zonder de code uit te voeren, bepaal wat er op het scherm wordt weergegeven:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Zonder de code uit te voeren, bepaal wat er op het scherm wordt weergegeven:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Zonder de code uit te voeren, bepaal wat er op het scherm wordt weergegeven:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>