Väärtuse ja tüübi võrdsus PHP-s
Oletame, et soovite võrrelda nii, et jutumärkides olev arv
ei oleks võrdne samale arvule
jutumärkideta. Teisisõnu soovite
võrrelda nii, et võrdlus ei oleks mitte ainult
väärtuse, vaid ka andmetüübi alusel. Selleks
tuleb operaatori == asemel kasutada
operaatorit ===. Sellise operaatoriga
võrdlust nimetatakse rangeks.
Vaadake näidet:
<?php
if ('3' === 3) {
echo '+++';
} else {
echo '---'; // käivitub see, sest väärtused pole tüübi poolest võrdsed
}
?>
Kuid kahe stringi '3' võrdlemisel
kuvatakse ekraanil '+++':
<?php
if ('3' === '3') {
echo '+++'; // käivitub see
} else {
echo '---';
}
?>
Samuti nagu arvude võrdlemisel:
<?php
if (3 === 3) {
echo '+++'; // käivitub see
} else {
echo '---';
}
?>
Kahe operaatori erinevus ilmneb just siis, kui väärtused on samad, kuid andmetüübid erinevad. Muudel juhtudel need operaatorid töötavad samamoodi. Näiteks erinevate arvude võrdlemisel kuvatakse loomulikult miinus:
<?php
if (2 === 3) {
echo '+++';
} else {
echo '---'; // käivitub see
}
?>
Tänapäeval on PHP-s üldiselt aktsepteeritud kasutada kõikjal ranget võrdlust. Arvatakse, et sel juhul on kood vähem vastuvõtlik vigadele.
Määratlege, mis kuvatakse ekraanile, ilma koodi käivitamata:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määratlege, mis kuvatakse ekraanile, ilma koodi käivitamata:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määratlege, mis kuvatakse ekraanile, ilma koodi käivitamata:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määratlege, mis kuvatakse ekraanile, ilma koodi käivitamata:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määratlege, mis kuvatakse ekraanile, ilma koodi käivitamata:
<?php
$test1 = 3;
$test2 = 3;
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>