PHP
Operatorlar
- Operatorların prioriteti
- Riyazi operatorlar
- Mənimsətmə operatoru
- İnkrement və dekrement operatorları
- Sətir operatorları
- Müqayisə operatorları
- Məntiq operatorları
learn-php qovluğunun içərisində operators.php faylı yaradırıq. Bu dərsdəki bütün nümunələri həmin fayla əlavə edib yoxlaya bilərsiniz.
Operatorlar ən vacib və təməl mövzulardan biridir. PHP proqramlaşdırma dilində operatorlar olmadan verilənlər üzərində hər hansı əməliyyatı yerinə yetirmək qeyri-mümkün olardı.
Operatorların prioriteti
PHP-də bir neçə operatordan birgə istifadə etdikdə onların icra ardıcıllığı prioritet vasitəsilə müəyyənləşdirilir.
1 + 5 * 3
ifadəsi ekrana 18 deyil, 16 çıxaracaq, çünki vurma (*
) operatorunun prioriteti toplama (+
) operatoru ilə müqayisədə daha yüksəkdir:
<?php
error_reporting(-1);
echo 1 + 5 * 3;
Nəticə:
Dairəvi mötərizələr operatorların icra ardıcıllığını dəyişmək məqsədilə istifadə oluna bilər. Məsələn, (1 + 5) * 3
ifadəsi ekrana 18 çıxaracaq:
<?php
error_reporting(-1);
echo (1 + 5) * 3;
Nəticə:
Rəsmi dokumentasiyada bütün operatorların prioritetinə baxmaq olar.
Riyazi operatorlar
Məktəbdə keçirilən riyaziyyat fənninin əsaslarını xatırlayırsınızmı? Aşağıdakı operatorlar da eynilə işləyir.
Nümunə | Ad | Nəticə |
---|---|---|
+$a | İdentiklik | $a dəyişəninin tipini int və ya float tiplərinə çevirir |
-$a | Mənfi | $a dəyişəninin işarəsini dəyişdirir |
$a + $b | Toplama | İki operandın cəmi |
$a - $b | Çıxma | İki operandın fərqi |
$a * $b | Vurma | İki operandın hasili |
$a / $b | Bölmə | İki operandın nisbəti |
$a % $b | Qalıqlı bölmə | Birinci operandın ikinciyə bölünməsindən alınan qalıq |
$a ** $b | Qüvvətə yüksəltmə | Birinci operandın ikinci operandın qiyməti dəfə öz-özünə vurulması |
<?php
error_reporting(-1);
$x = 5;
$y = 3;
var_dump($x + $y);
var_dump($x - $y);
var_dump($x * $y);
var_dump($x / $y);
var_dump($x % $y);
var_dump($x ** $y);
Nəticə:
int 8
int 2
int 15
float 1.6666666666667
int 2
int 125
Nəzərə alın ki qalıqlı bölmə zamanı hər iki operand tam ədədə (int
tipi) çevrilir:
<?php
error_reporting(-1);
$a = 5.5;
$b = 3.9;
echo $a % $b;
Nəticə:
2
Yuxarıdakı nümunədə $a
və $b
dəyişənlərinin qiymətləri tam ədədə çevrilir, yəni 5 və 3 olur. 5 ədədi 3-ə tam bölünmür, qalıq 2-ə bərabərdir.
Mənimsətmə operatoru
Dəyişənlər dərsində bu operatorla artıq tanış olmuşduq. Mənimsətmə operatoru =
işarəsi kimi göstərilir. Bu operator onu bildirir ki, soldakı operanda sağdakı ifadənin qiyməti mənimsədilir:
<?php
$x = 25; // $x dəyişəninə 25 qiyməti mənimsədilir
Mənimsətmə operatorunun prioriteti çox aşağıdır. Buna görə $x = 2 * 2 + 1
ifadəsində birinci növbədə riyazi əməliyyatlar (onların prioriteti yüksəkdir), daha sonra mənimsətmə operatoru icra olunur:
<?php
error_reporting(-1);
$x = 2 * 2 + 1;
echo $x; // 5
Bundan başqa, riyazi və sətir əməliyyatları üçün cəm, fərq, hasil, nisbət və birləşdirmə mənimsətməsi operatorları mövcuddur:
Operator | Ad | Qısa yazılış | Tam yazılış |
---|---|---|---|
+= |
cəm mənimsətməsi |
$x = 3; $x += 4; |
$x = 3; $x = $x + 4; |
-= |
fərq mənimsətməsi |
$x = 6; $x -= 3; |
$x = 6; $x = $x - 3; |
*= |
hasil mənimsətməsi |
$x = 2; $x*= 2; |
$x = 2; $x = $x * 2; |
/= |
nisbət mənimsətməsi |
$x = 10; $x /= 5; |
$x = 10; $x = $x / 5; |
.= |
birləşdirmə mənimsətməsi |
$x = 'green'; $x .= ' tea'; |
$x = 'green'; $x = $x . ' tea'; |
Məsələn, cəm mənimsətməsinə aid aşağıdakı nümunəyə baxaq:
<?php
error_reporting(-1);
$a = 3;
$a += 5; // $a = $a + 5 ifadəsinin qısa yazılışı
echo $a;
Nəticə:
8
Aşağıdakı nümunədə hasil mənimsətməsindən istifadə edilib:
<?php
error_reporting(-1);
$a = 10;
$a *= 5; // $a = $a * 5 ifadəsinin qısa yazılışı
Nəticə:
50
İnkrement və dekrement operatorları
Çox vaxt müxtəlif alqoritmlərdə tam ədədləri bir vahid artırmaq və ya azaltmaq lazım gəlir. Bu məqsədlə inkrement və dekrement operatorlarından istifadə edilir.
İnkrement/dekrement operatorlarını yalnız sətir və ədədlər üzərində tətbiq etmək olar. null
qiymətinin dekrementi ekrana heç nə çıxarmır, inkrementi isə 1-ə bərabərdir.
Nümunə | Ad | Əməliyyat |
---|---|---|
++$a | prefiks inkrement | $a dəyişəninin qiymətini bir vahid artırır, sonra dəyişənin qiymətini geri qaytarır |
$a++ | postfiks inkrement | $a dəyişəninin qiymətini geri qaytarır, sonra dəyişənin qiymətini bir vahid artırır |
--$a | prefiks dekrement | $a dəyişəninin qiymətini bir vahid azaldır, sonra dəyişənin qiymətini geri qaytarır |
$a-- | postfiks dekrement | $a dəyişəninin qiymətini geri qaytarır, sonra dəyişənin qiymətini bir vahid azaldır |
<?php
error_reporting(-1);
$i = 5;
$x = $i++; // Əvvəlcə $x dəyişəninə $i dəyişəninin cari qiyməti (5) mənimsədilir, sonra $i dəyişənin qiyməti bir vahid artırılır (6)
$y = ++$i; // İlk öncə $i dəyişəninin qiyməti bir vahid artırılır (7), sonra $y dəyişəninə mənimsədilir (7)
$z = $i--; // Əvvəlvə $z dəyişəninə $i dəyişəninin cari qiyməti (7) mənimsədilir, sonra $i dəyişənin qiyməti bir vahid azaldılır (6)
var_dump($x);
var_dump($y);
var_dump($z);
var_dump($i);
Nəticə:
int 5
int 7
int 7
int 6
Sətir operatorları
PHP-də sətirlərlə (string
tipi) işləmək üçün birləşdirmə operatoru (.
) mövcuddur. Bu operator sol və sağ arqumentləri birləşdirir. Daha yaxşı başa düşmək üçün aşağıdakı nümunəyə baxaq:
<?php
error_reporting(-1);
$greeting = 'Salam, ';
$name = 'Emil';
$greeting = $greeting . $name;
echo $greeting;
Nəticə:
Salam, Emil
Yuxarıdakı ifadəni daha qısa yazmaq üçün birləşdirmə mənimsətməsi operatorundan istifadə edə bilərik:
<?php
error_reporting(-1);
$greeting = 'Salam, ';
$name = 'Emil';
$greeting .= $name;
echo $greeting;
Nəticə eynidir:
Salam, Emil
Birləşdirmə operatoru vasitəsilə yalnız sətir deyil, həmçinin müxtəlif tipləri birləşdirmək mümkündür. Bu vaxt digər tiplər avtomatik olaraq sətir tipinə çevrilir:
<?php
error_reporting(-1);
$boolean = true;
$fruit = ' alma';
$str = $boolean . $fruit;
echo $str;
Nəticə:
1 alma
Yuxarıdakı nümunəni daha yaxşı başa düşmək üçün bu linkə keçid edib diqqətlə oxuyun.
Müqayisə operatorları
Müqayisə operatorları, adından göründüyü kimi iki qiyməti müqayisə etməyə imkan verir. Müqayisənin nəticəsi həmişə məntiqi tip (true
və ya false
) olur:
<?php
error_reporting(-1);
$x = 5;
var_dump(10 > $x);
var_dump(4 > $x);
var_dump(5 == $x);
Nəticə:
boolean true
boolean false
boolean true
Bərabərlik (==
) və bərabərsizlik (!=
) operatorlarından başlayaq:
<?php
error_reporting(-1);
$x = 2;
$y = '2';
var_dump($x == $y); //bərabərlik operatoru ilə müqayisə edirik
var_dump($x != $y); //bərabərsizlik operatoru ilə müqayisə edirik
Nəticə:
boolean true
boolean false
==
operatoru operandları eyni tipə çevirir, bundan sonra onların qiymətini müqayisə edir. Yuxarıdakı nümunədə '2' sətri interpretator tərəfindən ədədə çevrilir və hər iki qiymət bərabər olduğuna görə nəticə true
olur.
!=
operatoru operandları eyni tipə çevirir, bundan sonra qiymətlərini müqayisə edir. Operandların qiymətləri bərabər deyillərsə, nəticə true
, əks halda isə false
olacaq.
Aşağıdakı nümunədə identiklik (===
) və qeyri-identiklik (!==
) operatorlarından istifadə edilib:
<?php
error_reporting(-1);
$x = 2;
$y = '2';
var_dump($x === $y); //identiklik operatoru ilə müqayisə edirik
var_dump($x !== $y); // qeyri-identiklik operatoru ilə müqayisə edirik
Nəticə:
boolean false
boolean true
İdentiklik operatoru (===
) tip çevrilməsi həyata keçirmir və operandların qiyməti ilə yanaşı, həm də tiplərini müqayisə edir. Əgər operandların həm qiyməti, həm də tipləri bərabərdirsə, onda nəticə true
olur.
!==
operatoru əvvəlcə operandların tiplərini müqayisə edir, əgər onlar identik deyillərsə (məsələn, sətir və tam ədəd tipləri), nəticə true
, yox əgər identikdirlərsə, onda həm də qiymətlərini müqayisə edir. Əgər operandların qiymətləri bərabər deyillərsə, nəticə true
, əks halda false
olur.
Aşağıdakı nümunədə digər müqayisə operatorlarından istifadə edilib:
<?php
error_reporting(-1);
$x = 2;
$y = 4;
var_dump($x > $y); // $x dəyişəninin qiyməti $y-dən böyükdür
var_dump($x < $y); // $x dəyişəninin qiyməti $y-dən kiçikdir
var_dump($x >= $y); // $x dəyişəninin qiyməti $y-dən böyükdür və ya bərabərdir
var_dump($x <= $y); // $x dəyişəninin qiyməti $y-dən kiçikdir və ya bərabərdir
Nəticə:
boolean false
boolean true
boolean false
boolean true
<=>
spaceship
(kosmik gəmi) operatoru PHP-nin 7-ci versiyasında istifadəyə verilib. Bu operator aşağıdakı kimi işləyir:
$a <=> $b
Əgər $a
dəyişəninin qiyməti $b
-nin qiymətindən böyükdürsə ($a > $b
), 1 geri qaytarır
Əgər $a
dəyişəninin qiyməti $b
-nin qiymətinə bərabərdirsə ($a == $b
), 0 geri qaytarır
Əgər $a
dəyişəninin qiyməti $b
-nin qiymətindən kiçikdirsə ($a < $b
), -1 geri qaytarır
<?php
error_reporting(-1);
var_dump(2 <=> 4);
var_dump(2 <=> 2);
var_dump(5 <=> 3);
Nəticə:
int -1
int 0
int 1
Məntiq operatorları
Məntiq operatorları mürəkkəb məntiqi ifadələrin formalaşdırılması üçün lazımdır. Belə ifadələrin nəticəsi həmişə ya true
, ya da false
olur.
Nümunə | Ad | Nəticə |
---|---|---|
$a and $b | və | Əgər hər iki operand doğrudursa, true geri qaytarır |
$a or $b | və ya | Operandlardan biri doğrudursa, true geri qaytarır |
$a xor $b | XOR | Operandlardan biri true , digəri false olan halda true geri qaytarır |
!$a | inkar | Operand true olduqda false geri qaytarır və ya əksinə |
$a && $b | və | Əgər hər iki operand doğrudursa, true geri qaytarır |
$a || $b | və ya | Operandlardan biri doğrudursa, true geri qaytarır |
Aşağıdakı nümunə məntiq operatorlarının işini daha ətraflı izah edir:
<?php
error_reporting(-1);
var_dump(true && true); // Nəticə: true
var_dump(true && false); // Nəticə: false
var_dump(true || true); // Nəticə: true
var_dump(true || false); // Nəticə: true
var_dump(false || true); // Nəticə: true
var_dump(!true); // Nəticə: false
var_dump(!false); // Nəticə: true
var_dump(false xor true); // Nəticə: true
var_dump(true xor true); // Nəticə: false
var_dump(true xor false); // Nəticə: true
var_dump(false xor false); // Nəticə: false
Şərh yazmaq üçün hesabınıza daxil olun.