Nestrihé porovnávanie logických hodnôt v PHP
V predchádzajúcom príklade som použil na porovnanie
operátor ===. V tomto prípade sa naša premenná
porovnávala na rovnosť true ako
podľa hodnoty, tak aj podľa typu.
V našej úlohe sa dá použiť aj operátor
==. Ak bude v premennej test
vždy jedna z hodnôt true
alebo false, tak sa nič nezmení:
<?php
$test = true; // tu píšeme alebo true, alebo false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
No ak do premennej $test môžu
pripadnúť akékoľvek hodnoty, tak všetko sa stáva
oveľa zložitejšie. V takom prípade, ak v premennej
bude nie logická hodnota, tak táto hodnota
sa najprv prevedie na logický typ a až
potom sa bude porovnávať.
Povedzme napríklad, že v našej premennej bude
číslo 1. V tomto prípade sa najprv
prevedie na logický typ, teda
na true. A potom sa vykoná porovnanie:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // spustí sa toto, pretože 1 == true - je to pravda
} else {
echo '---';
}
?>
No napríklad číslo 0 sa prevedie
na false. A naša podmienka vo výsledku
bude nepravdivá:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // spustí sa toto, pretože 0 == true - je to NEpravda
}
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>