Rovnosť podľa hodnoty a typu v PHP
Povedzme, že chcete porovnávať tak, aby číslo
v úvodzovkách nebolo rovnaké ako rovnaké číslo
bez úvodzoviek. Inými slovami, chcete
porovnávať tak, aby porovnanie bolo nielen
podľa hodnoty, ale aj podľa typu údajov. Na to
namiesto operátora == by ste mali použiť
operátor ===. Porovnanie s takýmto operátorom
sa nazýva prísne.
Pozrite si príklad:
<?php
if ('3' === 3) {
echo '+++';
} else {
echo '---'; // zobrazí sa toto, pretože hodnoty nie sú rovnaké podľa typu
}
?>
Ale pri porovnávaní dvoch reťazcov '3'
sa na obrazovku vypíše '+++':
<?php
if ('3' === '3') {
echo '+++'; // zobrazí sa toto
} else {
echo '---';
}
?>
Rovnako ako pri porovnávaní čísel:
<?php
if (3 === 3) {
echo '+++'; // zobrazí sa toto
} else {
echo '---';
}
?>
Rozdiel medzi dvoma operátormi sa prejavuje presne vtedy, keď sú hodnoty rovnaké, ale typ údajov je rozdielny. V ostatných prípadoch tieto operátory fungujú rovnako. Napríklad, pri porovnávaní rôznych čísel sa samozrejme vypíše mínus:
<?php
if (2 === 3) {
echo '+++';
} else {
echo '---'; // zobrazí sa toto
}
?>
V súčasnosti je v PHP bežné používať všade prísne porovnanie. Predpokladá sa, že v takom prípade je kód menej náchylný na chyby.
Bez spustenia kódu určite, čo sa zobrazí na obrazovke:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa zobrazí na obrazovke:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa zobrazí na obrazovke:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa zobrazí na obrazovke:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa zobrazí na obrazovke:
<?php
$test1 = 3;
$test2 = 3;
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>