PHP
Tip çevrilmələri
Həmişəki kimi php-beginner qovluğunda cast.php faylı yaradırıq. Bu dərsdəki bütün nümunələri cast.php faylına əlavə edib yoxlaya bilərsiniz.
Proqramlaşdırmada bəzən bir tipdə olan məlumatı başqa bir tipə çevirmək lazım gəlir.
Avtomatik tip çevrilməsi
PHP proqramlaşdırma dilində zəif tipləşdirmə tətbiq edilir, yəni skriptdə dəyişənin tipini öncədən elan etmək lazım deyil. Dəyişənə qiymət mənimsədiləndə dəyişənin tipi avtomatik müəyyənləşdirilir. Eyni bir dəyişən skriptin müxtəlif hissələrində tam ədəd, sonra həqiqi ədəd, daha sonra isə sətir və başqa tip ola bilər.
Ötən dərsdə öyrəndik ki, PHP proqramlaşdırma dili sətirlər üzərində vurma əməliyyatı aparmağa imkan vermir. Bəs əgər tam ədəddən ibarət sətirlə digər ədədi toplasaq necə?
<?php
error_reporting(-1);
$number = 10;
$str = '5';
echo $number + $str;
Nəticə:
15
PHP interpretatoru tiplərin uyğunsuzluğunu aşkar etdikdə, özü onları avtomatik olaraq lazımi tipə çevirməyə çalışır. Yuxarıdakı nümunədə interpretator ilk əvvəl '5' sətrini 5 tam ədədinə çevirir, sonra ədədlərin cəmini hesablayır.
Qeyd edim ki, ciddi tipləşdirmədən istifadə olunan dillərdə ədədlə sətrin cəmini hesablamaq mümkün deyil. PHP-də zəif tipləşdirmədən istifadə olunduğuna görə, bu mümkündür.
Aşağıda digər avtomatik tip çevrilmələri izah edilib.
Məntiqi tipə çevrilmə
Əgər operator, funksiya və ya idarəedici konstruksiya bool
tipinə aid arqument tələb edirsə, dəyişənin tipi avtomatik həmin tipə çevrilir.
Məntiqi tipə çevrilmə zamanı aşağıdakı qiymətlər false
hesab edilir:
- false
- 0
- 0.0 və -0.0
- boş sətir və "0" simvolundan ibarət sətir
- boş massiv
- null xüsusi tipi
Digər qiymətlər true
hesab edilir.
<?php
error_reporting(-1);
$num = 0;
if ($num) {
$num = $num + 1;
}
echo $num;
Nəticə:
0
if(...)
operatoru dairəvi mötərizənin içərisində yazılmış ifadəni məntiqi tipə çevirir və nəticə true
olduqda kod bloku icra olunur. Yuxarıdakı nümunədə $num
dəyişəninin qiyməti 0-dır, yəni məntiqi tip çevrilmə zamanı false
hesab edilir. Buna görə if
operatorunun içərisindəki kod bloku icra olunmur və sadəcə $num
dəyişəninin qiyməti - 0 ekranda göstərilir.
Gəlin $num
dəyişəninin qiymətini elə dəyişək ki, o, məntiqi tipə çevrilmə zamanı true
hesab edilsin:
<?php
error_reporting(-1);
$num = 14;
if ($num) {
$num = $num + 1;
}
echo $num;
Nəticə:
15
Tam ədəd tipinə çevrilmə
Əgər operator, funksiya və ya idarəedici konstruksiya int
tipinə aid arqument tələb edirsə, dəyişənin tipi avtomatik çevrilir.
Məntiqi tipdən çevrilmə
false
məntiqi tipi 0-a, true
isə 1-ə çevrilir:
<?php
error_reporting(-1);
$boolean = true;
$num = 0;
if (0 + $boolean) {
$num = $num + 1;
}
echo $num;
Nəticə:
1
Yuxarıdakı nümunədə $boolean
dəyişəninin qiyməti true
-dur. Artıq bildiyimiz kimi if(....)
operatoru dairəvi mötərizənin içərisində yazılmış ifadəni məntiqi tipə çevirir və nəticə true
olduqda kod bloku icra olunur. 0 + $boolean
ifadəsinin nəticəsi 1-dir, çünki $boolean
dəyişənin qiyməti true
-dur və bu, riyazi əməliyyatlarda avtomatik olaraq 1-ə (int
tipinə) çevrilir. Buna görə if
operatorunun içərisindəki kod bloku icra edilir və $num
dəyişəninin qiyməti ekranda göstərilir.
Sətir tipindən çevrilmə
Əgər sətir tam ədəddən ibarətdirsə, onda o, riyazi əməliyyatlarda tam ədəd tipinə çevrilir:
<?php
error_reporting(-1);
$x = 3;
echo $x + '10';
Nəticə:
13
Yuxarıdakı nümunədə PHP interpretatoru '10' sətrini avtomatik olaraq ədədə çevirərək toplama əməliyyatını icra edir.
NULL xüsusi tipindən çevrilmə
null
xüsusi tipi həmişə 0 tam ədədinə çevrilir.
Sətir tipinə çevrilmə
Sətir tipli ifadələrdə avtomatik çevrilmə baş verir.
true
məntiqi tipi 1-ə, false
isə boş sətrə ("") çevrilir:
<?php
error_reporting(-1);
$boolean = true;
$str = $boolean . ' alma';
echo $str . '<br>';
echo gettype($str);
Nəticə:
1 alma
string
Sətir tipli ifadələrdə tam və həqiqi ədədlər sətir tipinə çevrilir:
<?php
error_reporting(-1);
$integer = 5;
$float = 15.5;
$str1 = $integer . ' alma';
$str2 = $float . ' sm';
echo $str1 . '<br>';
echo $str2 . '<br>';
echo gettype($str1) . '<br>';
echo gettype($str2) . '<br>';
Nəticə:
5 alma
15.5 sm
string
string
Avtomatik tip çevrilməsi bir tərəfdən həqiqətən rahatdır. Amma bu, təcrübədə çoxlu səhvlərə və çətin tapılan problemlərə gətirib çıxara bilər.
Dəyişənin tipini özün təyin et
Dəyişənin tipini özümüz də təyin edə bilərik:
(çevriləcək tipin adı) dəyişən
- (int), (integer) -
int
tipinə çevrilmə - (bool), (boolean) -
bool
tipinə çevrilmə - (float), (double), (real) -
float
tipinə çevrilmə - (string) -
string
tipinə çevrilmə - (array) -
array
tipinə çevrilmə - (object) -
object
tipinə çevrilmə
<?php
error_reporting(-1);
$x = 12.5;
echo (int)$x + 10;
Nəticə:
22
Yuxarıdakı nümunədə $x
dəyişəninin qiyməti 12.5-dir (float
tipi). Növbəti sətirdə onu int
tipinə çeviririk, yəni $x
dəyişəninin qiyməti 12 olur və toplama əməliyyatının nəticəsi ekranda göstərilir.
Dərsin kodlarını github-dan köçürə bilərsiniz.
Şərh yazmaq üçün hesabınıza daxil olun.