PHPda mantiqiy qiymatlarni qattiq bo'lmagan taqqoslash
Oldingi misolda men taqqoslash uchun
=== operatoridan foydalandim. Bu holda bizning o'zgaruvchimiz
true ga qiymat va turi bo'yicha
tenglik uchun taqqoslandi.
Bizning vazifamizda == operatoridan ham
foydalanish mumkin. Agar test o'zgaruvchisida
har doim true yoki false
qiymatlardan biri bo'lsa, hech narsa o'zgarmaydi:
<?php
$test = true; // bu yerda yozamiz true yoki false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Ammo agar $test o'zgaruvchisiga
har qanday qiymat tushishi mumkin bo'lsa, hamma narsa
ancha murakkablashadi. Bunday holda, agar o'zgaruvchida
mantiqiy qiymat bo'lmasa, bu qiymat
avval mantiqiy turga o'zgartiriladi va shundan keyingina
taqqoslanadi.
Masalan, bizning o'zgaruvchimizda
1 soni bo'lsin. Bu holda u avval
mantiqiy turga, ya'ni true ga o'zgartiriladi. Keyin esa taqqoslash bajariladi:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // bu ishlaydi, chunki 1 == true - bu to'g'ri
} else {
echo '---';
}
?>
Ammo, masalan, 0 soni
false ga o'zgartiriladi. Va bizning shartimiz natijada
yolg'on bo'ladi:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // bu ishlaydi, chunki 0 == true - bu NOTo'g'ri
}
?>
Kodni ishlamasdan, ekranga nima chiqishini aniqlang:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Kodni ishlamasdan, ekranga nima chiqishini aniqlang:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Kodni ishlamasdan, ekranga nima chiqishini aniqlang:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Kodni ishlamasdan, ekranga nima chiqishini aniqlang:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
Kodni ishlamasdan, ekranga nima chiqishini aniqlang:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Kodni ishlamasdan, ekranga nima chiqishini aniqlang:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>