PHP даги шартлардаги ифода кавалларининг мажбурий эмаслиги муаммоси
PHP юқорида кўрсатилган ифода каваллари билан қисқартиришларга рухсат берса-да, мен умуман, бундай қилишни тавсия бермайман, чунки бу қийин сезиладиган хатолар манбаидир.
Масалан, куйидаги код бор деб фараз қилайлик:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Энди деб фараз қилайлик, биз шарт бажарилган тақдирда, яна иккинчи echo ни бажаришни хоҳладик:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Аммо, ифода кавалларисиз шарт ичида фақат биринчи чиқиш (echo) мавжуд, яъни биринчи чиқиш тўғри шартда ишлайди, иккинчиси эса - ҳамеша.
Аслида бизнинг кодимиз шунга тенг кучдадир:
<?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 '+++';
?>