Niestrogie porównywanie wartości logicznych w PHP
W poprzednim przykładzie użyłem do porównania
operatora ===. W tym przypadku nasza zmienna
była porównywana pod kątem równości z true
zarówno pod względem wartości, jak i typu.
W naszym zadaniu można użyć również operatora
==. Jeśli w zmiennej test
zawsze będzie jedna z wartości true
lub false, to nic się nie zmieni:
<?php
$test = true; // piszemy tu albo true, albo false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Ale jeśli do zmiennej $test mogą
trafiać dowolne wartości, wszystko staje się
dużo bardziej skomplikowane. W takim przypadku, jeśli w zmiennej
będzie wartość niebędąca wartością logiczną, to ta wartość
zostanie najpierw przekonwertowana na typ logiczny i dopiero
wtedy zostanie porównana.
Załóżmy na przykład, że w naszej zmiennej będzie
liczba 1. W tym przypadku zostanie ona najpierw
przekonwertowana na typ logiczny, czyli
na true. A następnie zostanie wykonane porównanie:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // zadziała to, bo 1 == true jest prawdą
} else {
echo '---';
}
?>
Z kolei na przykład liczba 0 zostanie przekonwertowana
na false. I nasz warunek w rezultacie
będzie fałszywy:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // zadziała to, bo 0 == true jest NIEprawdą
}
?>
Bez uruchamiania kodu określ, co zostanie wyświetlone na ekranie:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Bez uruchamiania kodu określ, co zostanie wyświetlone na ekranie:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Bez uruchamiania kodu określ, co zostanie wyświetlone na ekranie:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Bez uruchamiania kodu określ, co zostanie wyświetlone na ekranie:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
Bez uruchamiania kodu określ, co zostanie wyświetlone na ekranie:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Bez uruchamiania kodu określ, co zostanie wyświetlone na ekranie:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>