Icke-strikt jämförelse av booleska värden i PHP
I föregående exempel använde jag för jämförelse
operatorn ===. I det här fallet jämfördes vår variabel
för likhet med true både
värde- och typmässigt.
I vår uppgift kan vi också använda operatorn
==. Om variabeln test
alltid innehåller ett av värdena true
eller false, så förändras ingenting:
<?php
$test = true; // här skriver vi antingen true eller false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Men om variabeln $test kan
innehålla vilka värden som helst, blir allt
myndigt mer komplicerat. I så fall, om variabeln
innehåller ett icke-booleskt värde, kommer det värdet
först att omvandlas till ett booleskt värde och först
därefter jämföras.
Låt oss till exempel anta att vår variabel innehåller
siffran 1. I det här fallet kommer den först
att omvandlas till boolesk typ, det vill säga
till true. Och sedan kommer jämförelsen att utföras:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // detta kommer att triggas, eftersom 1 == true är sant
} else {
echo '---';
}
?>
Men till exempel kommer siffran 0 att omvandlas
till false. Och vårt villkor kommer som ett resultat
att vara falskt:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // detta kommer att triggas, eftersom 0 == true är INTE sant
}
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Utan att köra koden, avgör vad som kommer att skrivas ut på skärmen:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>