Problemet med valgfrie krøllparenteser i betingelser i PHP
Til tross for at PHP tillater de viste forkortelsene med krøllparenteser, anbefaler jeg generelt ikke å gjøre det, ettersom det er en kilde til vanskelig oppdagede feil.
La oss for eksempel ha følgende kode:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
La oss nå si at vi bestemmer oss for, i tilfellet
hvis betingelsen oppfylles, å gjøre et andre
echo også:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Imidlertid, uten krøllparenteser er det bare den første utskriften som er inni betingelsen, det vil si at den første utskriften vil utføres når betingelsen er sann, mens den andre - alltid.
Faktisk er koden vår ekvivalent med denne:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // denne linjen endte utenfor betingelsen
?>
Men vi hadde ønsket en slik kode:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // denne linjen er inni betingelsen
}
?>
Nettopp derfor anbefales det alltid å plassere krøllparenteser, for ikke å havne i slike feil.
Uten å kjøre koden, bestem hva som vil skrives ut på skjermen:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Uten å kjøre koden, bestem hva som vil skrives ut på skjermen:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Uten å kjøre koden, bestem hva som vil skrives ut på skjermen:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>