Operatorlar
Redaktə edilib:Operatorun prioriteti
PHP ifadəsində bir neçə operatordan istifadə edildikdə 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. Dairəvi mötərizələr cütlüyü 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.
Operatorların prioriteti eyni olduqda, onların ifadədə sağdan sola, yaxud soldan sağa icra edilməsi assosiativlik ilə müəyyənləşdirilir. Məsələn, çıxma (-) sol assosiativ operatordur, ona görə 1 - 2 - 3 ifadəsi (1 - 2) - 3 kimi qruplaşdırılır və ekrana -4 çıxarılır. Mənimsətmə (=) isə sağ assosiativ operatordur və ona görə $a = $b = $a ifadəsi $a = ($b = $c) kimi qruplaşdırılır.
Aşağıdakı cədvəldə göstərilmiş operatorların siyahısı onların prioriteti üzrə sıralanıb. Prioriteti daha yüksək olan operatorlar cədvəlin yuxarı hissəsində, aşağı olanlar isə aşağı hissəsində yerləşir.
Assosiativlik | Operator |
---|---|
Sağ | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ |
Sağ | ! |
Sol | * / % |
Sol | + - . |
Assosiativ deyil | < <= > >= |
Assosiativ deyil | == != === !== <> |
Sol | & |
Sol | && |
Sol | || |
Sağ | ?? |
Sol | ?: |
Sağ | = += -= *= **= /= .= %= &= |
Sol | and |
Sol | or |
<?php
$b = 5;
$a = $b -= 4;
echo 'a = ' .$a.' b = ' .$b; // a = 1 b = 1
?>
Riyazi operatorlar
Məktəbdə keçirilən riyaziyyat fənninin əsaslarını xatırlayırsınız? Aşağıdakı operatorlar da eynilə işləyir.
Operator | Əməliyyat | Nəticə |
---|---|---|
+ | Toplama | İki operandın cəmi |
- | Çıxma | İki operandın fərqi |
* | Vurma | İki operandın hasili |
/ | Bölmə | İki operandın nisbəti |
% | Modul | Birinci operandın ikinciyə bölünməsindən sonra qalan qalıq |
** | Qüvvətə yüksəltmə | PHP 5.6-da daxil edilib. |
Modul əməliyyatı zamanı operandlar tam ədədə konvertasiya olunur.
<?php
echo (5 + 4). '<br>' .PHP_EOL;
echo (5 - 4). '<br>' .PHP_EOL;
echo (5 * 4). '<br>' .PHP_EOL;
echo (5 / 4). '<br>' .PHP_EOL;
echo (5 % 4). '<br>' .PHP_EOL;
echo (5 ** 4). '<br>' .PHP_EOL;
?>
Nəticə:
9
1
20
1.25
1
625
Mənimsətmə operatoru
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
$fruit = "apple"; // fruit dəyişəninə apple 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), sonra mənimsətmə icra olunur.
<?php
$x = 2 * 2 + 1;
echo $x; // 5
?>
Bir ifadəni eyni anda bir neçə dəyişənə mənimsətmək mümkündür.
<?php
$n = $m = $p = 3 * 5;
echo $n. '<br>' .PHP_EOL; // 15
echo $m. '<br>' .PHP_EOL; // 15
echo $p. '<br>' .PHP_EOL; // 15
?>
İnkrement və dekrement operatorları
PHP proqramlaşdırma dilində $a += 1 və $b -= 1 tipli ifadələrdən geniş istifadə edilməsilə əlaqədar inkrement (artırma) və dekrement (azaltma) operatorları tətbiq olunur.
İnkrement/dekrement operatorları yalnız sətir və ədədlərlə işləyir, massiv, obyekt və resurslar dəstəklənmir. NULL qiymətinin dekrementi ekrana heç nə çıxarmayacaq, inkrementi isə 1-ə bərabərdir.
Nümunə | Adı | Nəticə |
---|---|---|
++$a | Öncədən artırma | $a dəyişəninin qiymətini 1 vahid artırır, sonra dəyişənin qiymətini geri qaytarır. |
$a++ | Sonradan artırma | $a dəyişəninin qiymətini geri qaytarır, sonra dəyişənin qiymətini 1 vahid artırır. |
--$a | Öncədən azaltma | $a dəyişəninin qiymətini 1 vahid azaldır, sonra dəyişənin qiymətini geri qaytarır. |
$a-- | Sonradan azaltma | $a dəyişəninin qiymətini geri qaytarır, sonra dəyişənin qiymətini 1 vahid azaldır. |