PHP

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$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 Ə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 Ə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
0
Çalışmalara (2) giriş əldə etmək üçün hesabınıza daxil olun.

Şərh yazmaq üçün hesabınıza daxil olun.