PHP-ում տրամաբանական արժեքների ոչ խիստ համեմատում
Նախորդ օրինակում ես համեմատության համար օգտագործեցի
=== օպերատորը: Այս դեպքում մեր փոփոխականը
համեմատվում էր true-ի հետ հավասարության
ինչպես արժեքով, այնպես էլ տիպով:
Մեր խնդրի դեպքում կարելի է օգտագործել նաև
== օպերատորը: Եթե test փոփոխականում
միշտ կլինի true կամ false
արժեքներից մեկը, ապա ոչինչ չի փոխվի:
<?php
$test = true; // այստեղ գրում ենք կամ true, կամ false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Բայց եթե $test փոփոխականում կարող են
հայտնվել ցանկացած արժեքներ, ապա ամեն ինչ շատ ավելի
բարդ է դառնում: Այդպիսի դեպքում, եթե փոփոխականում
տրամաբանական արժեք չլինի, ապա այդ արժեքը
նախ կվերափոխվի տրամաբանական տիպի և միայն
դրանից հետո կհամեմատվի:
Ենթադրենք, օրինակ, մեր փոփոխականում կլինի
1 թիվը: Այդ դեպքում այն նախ
կվերափոխվի տրամաբանական տիպի, այսինքն
կդառնա true: Եվ ապա կկատարվի համեմատությունը:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // կգործի սա, քանի որ 1 == true-ը ճիշտ է
} else {
echo '---';
}
?>
Իսկ օրինակ, 0 թիվը վերափոխվում է
false-ի: Եվ մեր պայմանը արդյունքում
կլինի կեղծ:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // կգործի սա, քանի որ 0 == true-ը ՉԷ ճիշտ
}
?>
Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>