Arvon ja tyypin yhtäläisyys PHP:ssä
Oletetaan, että haluat vertailla siten, että numero
lainausmerkeissä ei ole yhtä suuri kuin sama numero
ilman lainausmerkkejä. Toisin sanoen haluat
vertailla siten, että vertailu ei ole pelkästään
arvon perusteella, vaan myös datatyypin perusteella. Tätä varten
operaattorin == sijasta tulisi käyttää
operaattoria ===. Vertailua tällaisella operaattorilla
kutsutaan tiukaksi.
Katso esimerkki:
<?php
if ('3' === 3) {
echo '+++';
} else {
echo '---'; // toimii tämä, koska arvot eivät ole yhtä suuria tyypin suhteen
}
?>
Mutta kun verrataan kahta merkkijonoa '3'
näytölle tulostuu '+++':
<?php
if ('3' === '3') {
echo '+++'; // toimii tämä
} else {
echo '---';
}
?>
Sama koskee numeroiden vertailua:
<?php
if (3 === 3) {
echo '+++'; // toimii tämä
} else {
echo '---';
}
?>
Ero kahden operaattorin välillä ilmenee tarkalleen silloin, kun arvot ovat samat, mutta datatyypit erilaiset. Muissa tapauksissa nämä operaattorit toimivat samalla tavalla. Esimerkiksi eri numeroiden vertailussa tietysti tulostuu miinus:
<?php
if (2 === 3) {
echo '+++';
} else {
echo '---'; // toimii tämä
}
?>
Nykyään PHP:ssä on yleisesti hyväksyttyä käyttää kaikkialla tiukkaa vertailua. Väitetään, että tällöin koodi on vähemmän alttiina virheille.
Määritä käyttämättä koodia, mitä tulostetaan näytölle:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määritä käyttämättä koodia, mitä tulostetaan näytölle:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määritä käyttämättä koodia, mitä tulostetaan näytölle:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määritä käyttämättä koodia, mitä tulostetaan näytölle:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Määritä käyttämättä koodia, mitä tulostetaan näytölle:
<?php
$test1 = 3;
$test2 = 3;
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>