PHP
Şərt operatorları
- if şərt operatoru
- else konstruksiyası
- elseif konstruksiyası: bir neçə şərt
- switch operatoru
- Ternar operatoru
php-beginner qovluğunda conditions.php faylı yaradırıq. Bu dərsdəki bütün nümunələri həmin fayla əlavə edib yoxlaya bilərsiniz.
Biz real həyatda şərtlərdən asılı olaraq müxtəlif qərarlar qəbul edirik. Proqramlaşdırma dillərində, həmçinin şərtdən asılı olaraq müxtəlif əməliyyatlar icra etmək, müxtəlif alqoritmlər qurmaq mümkündür.
if şərt operatoru
Yazılış sintaksisi aşağıdakı kimidir:
<?php
if(şərt) {
şərt doğrudursa, kod icra olunur
}
if
operatoru dairəvi mötərizənin içərisində yazılmış şərti (ifadəni) yoxlayır və nəticəni məntiqi tipə çevirir. Nəticə true
olduqda kod bloku icra olunur:
<?php
error_reporting(-1);
$number = 10;
if ($number > 9) {
echo $number . ' ədədi 9-dan böyükdür.';
}
Nəticə:
10 ədədi 9-dan böyükdür
Yuxarıdakı nümunədə $number
dəyişəninin qiyməti 10-a bərabərdir. Dairəvi mötərizənin içərisində yazılmış şərt - $number > 9
yoxlanılır. 10 > 9
ifadəsinin nəticəsi true
, yəni doğrudur, buna görə fiqurlu mötərizənin içərisində yazılmış kod icra olunur.
else konstruksiyası
Əksər hallarda şərtin nəticəsi doğrudursa (true
) bir kodu, yalandırsa (false
) digər kodu icra etmək lazım gəlir. Bu məqsədlə else
konstruksiyasından istifadə edilir:
Məsələn:
<?php
error_reporting(-1);
$number = 10;
if ($number > 9) {
echo $number . ' ədədi 9-dan böyükdür.';
} else {
echo $number . ' ədədi 9-dan kiçik və ya bərabərdir.';
}
Nəticə:
10 ədədi 9-dan böyükdür
Əgər skriptin əvvəlində $number
dəyişəninin qiymətini 8-ə dəyişsək, onda else
bloku icra olunur:
8 ədədi 9-dan kiçik və ya bərabərdir.
elseif konstruksiyası: bir neçə şərt
Bəzən bir neçə şərt yoxlamaq lazımdır. Bu məqsədlə elseif
konstruksiyasından istifadə edilir.
Məsələn:
<?php
error_reporting(-1);
$a = 11;
$b = '11';
if ($a > $b) {
echo 'a-nın qiyməti b-dən böyükdür.';
} elseif ($a === $b) {
echo 'a və b-nin həm qiymətləri, həm də tipləri bərabərdir.';
} elseif ($a == $b) {
echo 'a və b-nin yalnız qiymətləri bərabərdir.';
} else {
echo 'b-nin qiyməti a-dan böyükdür.';
}
Nəticə:
a və b-nin yalnız qiymətləri bərabərdir.
Yuxarıdakı nümunədə PHP interpretatoru ilk öncə $a > $b
şərtini yoxlayır, onun nəticəsi false
olduğuna görə növbəti şərtə - $a === $b
keçir, dəyişənlərin tipi eyni olmadığına görə bu şərtin də nəticəsi false
-dır. Sonrakı şərtin nəticəsi isə true
-dur, ona görə həmin fiqurlu mötərizənin içərisində yazılmış kod icra olunur.
Digər bir nümunəyə baxaq:
<?php
error_reporting(-1);
$age = 45;
if($age >= 1 && $age <= 6) {
echo 'Siz hələ böyüməlisiniz';
} elseif($age >= 7 && $age < 19) {
echo 'Siz təhsil almalısınız';
} elseif($age >= 19 && $age < 65) {
echo 'Siz təqaüd almaq üçün hələ işləməlisiniz';
} elseif($age >= 65) {
echo 'Siz artıq təqaüd ala bilərsiniz';
} else {
echo 'Təəsüf, heç bir şərt ödənmir';
}
Nəticə:
Siz təqaüd almaq üçün hələ işləməlisiniz
Artıq bildiyimiz kimi, if
operatoru dairəvi mötərizənin içərisində yazılmış şərti (ifadəni) yoxlayır və nəticəni məntiqi tipə çevirir. Nəticə true
olduqda kod bloku icra olunur. Dairəvi mötərizənin içərisində, həmçinin mürəkkəb şərtlər (ifadələr) ola bilər. PHP interpretatoru həmin şərti yoxlayır və nəticəni məntiqi tipə çevirir. Baxdığımız nümunədə $age >= 19 && $age < 65
şərtinin nəticəsi true
-dur, ona görə həmin fiqurlu mötərizənin içərisində yazılmış kod icra olunur. $age >= 19 && $age < 65
ifadəsində &&
məntiq operatorundan istifadə edilib. Əgər &&
məntiq operatorunun sağ və sol tərəflərində yerləşən ifadələrin nəticəsi true
-dursa, şərtin nəticəsi də true
olur.
Aşağıdakı kod isə verilmiş ədədin tək və ya cüt olmasını müəyyənləşdirir:
<?php
error_reporting(-1);
$number = mt_rand(1, 30);
if ($number % 2 === 0) {
echo "$number cüt ədəddir.";
} else {
echo "$number tək ədəddir.";
}
mt_rand()
funksiyası 1-30 aralığında təsadüfi ədəd yaradır. Ədədin cüt və tək olması onun 2-yə tam və ya qalıqla bölünməsi ilə müəyyənləşdirilir. Yuxarıdakı kodu öz kompüterinizdə işə salın, nəticə hər dəfə fərqli olacaq, çünki mt_rand()
funksiyası vasitəsilə hər dəfə təsadüfi ədəd yaradılır.
switch operatoru
switch
operatoru çoxlu sayda if-elseif
konstruksiyasını əvəz etmək üçün əla üsuldur, lakin bəzi qaydaları bilmək lazımdır:
switch
operatoru verilənlərin tipini deyil, yalnız qiymətini müqayisə edir- Bu operator verilmiş şərti (ifadəni)
case
operatorundan sonra göstərilmiş hər bir qiymətlə müqayisə edir. Uyğunluq tapılan kimi müvafiqcase
bloku icra olunur
<?php
error_reporting(-1);
$x = 2;
switch ($x) {
case 1:
echo 'Bir';
break;
case 2: // Uyğunluq tapıldı
echo 'İki';
break;
case 3:
echo 'Üç';
break;
}
Nəticə:
İki
Yuxarıdakı nümunədə switch
operatoru $x
dəyişəninin qiymətini ardıcıllıq şəkildə hər bir case
operatorunun qiyməti ilə müqayisə edir. $x
dəyişənin qiyməti əvvəlcə 1 ilə müqayisə edilir, şərt ödənmədiyinə görə sonrakı case
operatorunun qiyməti (2) ilə müqayisə edilir. Bu dəfə şərt ödənilir, ona görə iki nöqtədən sonra yazılmış kod icra olunur və növbəti sətirdə yazılmış break
operatoru kodun icrasını dayandırır.
Break operatoru yazılmadıqda PHP interpretatoru sonrakı case blok(lar)unun kodunu da icra edir:
<?php
error_reporting(-1);
$x = 2;
switch ($x) {
case 1:
echo 'Bir';
break;
case 2:
echo 'İki';
case 3:
echo 'Üç';
case 4:
echo 'Dörd';
}
Nəticə:
İkiÜçDörd
Heç bir uyğunluq tapılmadıqda, default
blokundan istifadə edə bilərik:
<?php
error_reporting(-1);
$x = 5;
switch ($x) {
case 1:
echo 'Bir';
break;
case 2:
echo 'İki';
case 3:
echo 'Üç';
case 4:
echo 'Dörd';
default:
echo 'Uyğunluq tapılmadı';
}
Nəticə:
Uyğunluq tapılmadı
Ternar operatoru
Ternar operatorunun (?:
) köməyilə if-else
konstruksiyasını daha yığcam yazmaq olar. Yazılış sintaksisi aşağıdakı kimidir:
şərt ? ifadə1 : ifadə2
Əvvəlcə şərt yoxlanılır, nəticə true
olduqda ifadə1, false
olduqda isə ifadə2 geri qayıdır:
<?php
error_reporting(-1);
$price = 12;
$accessAllowed = ($price >= 15) ? 'Kursdan istifadə edə bilərsiniz' : 'Kursdan istifadə mümkün deyil';
echo $accessAllowed;
Nəticə:
Kursdan istifadə mümkün deyil
Digər bir nümunəyə baxaq:
<?php
error_reporting(-1);
$number = -5;
echo ($number >= 0) ? "$number ədədi müsbətdir" : "$number mənfi ədəddir";
Nəticə:
-5 ədədi mənfidir
Şərh yazmaq üçün hesabınıza daxil olun.