Codecourse

Verilənlərin tipi

PHP proqramlaşdırma dilində 8 əsas verilənlər tipi mövcuddur. Biz "PHP. Başlanğıc səviyyə" dərsliyində 6 verilənlər tipini (məntiqi, tam ədədlər, həqiqi ədədlər, sətirlər, null xüsusi tipi və massivlər) nəzərdən keçirəcəyik.

Dəyişənlərə müxtəlif tiplərin qiyməti mənimsədilə bilər. Skriptin icrası zamanı dəyişənin tipi həmişə gözlənilməz şəkildə dəyişilə bilər. Məsələn, sətir tipi kimi elan edilmiş dəyişən daha sonra riyazi hesablamalarda istifadə oluna bilər.

Məntiqi tip (Boolean)

Ən sadə verilənlər tipidir. Dəyişən ya TRUE, ya da FALSE qiymətini alır. TRUE və ya FALSE konstantları registrdən asılı deyil.

<?php
$var = true; // var dəyişəninə true qiymətini mənimsədirik
?>

Məntipi tip əsasən şərt ifadələrində istifadə edilir. Məsələn, $a > $b ifadəsinin nəticəsi ya TRUE, ya da FALSE olacaq.

Qeyd

-1 TRUE sayılır. 0-dan başqa, bütün müsbət və mənfi ədədlər TRUE sayılır!

Məntiqi tipə konvertasiya

Əksər hallarda tipin konvertasiyasına ehtiyac yoxdur, çünki əgər operator, funksiya və ya idarəedici konstruksiya boolean arqument tələb edirsə, dəyişənin tipi avtomatik çevrilir. Məntiqi tipə konvertasiya etmək üçün (bool) və ya (boolean) istifadə edin.

Məntiqi tipə konvertasiya etdikdə aşağıdakı qiymətlər FALSE sayılır:

Tam ədədlər (Integers)

Tam ədədlər proqramlaşdırmada geniş yayılıb, çünki tətbiqi məsələlərin əksəriyyəti riyazi xarakter daşıyır, həm də ən sürətli verilənlər tipidir. Məsələn, əgər həqiqi ədədlərin emalı üçün riyazi soprosessordan istifadə olunursa, amma prosessor tam ədədlər üzərində birbaşa əməliyyatlar apara bilər.

Tam ədədlər onluq, onaltılıq, səkkizlik və ya ikilik say sistemində göstərilə bilər.

<?php
$a = 1234; // onluq ədəd
$a = -123; // mənfi ədəd
$a = 0123; // səkkizlik ədəd (onluq say sistemində 83-ün ekvivalentidir)
$a = 0x1A; // onaltılıq ədəd (onluq say sistemində 26-nın ekvivalentidir)
$a = 0b11111111; // ikilik ədəd (onluq say sistemində 255-in ekvivalentidir)
?>

Tam ədədə konvertasiya

Integer tipinə konvertasiya üçün (int) və ya (integer) istifadə edin. Ancaq əksər hallarda tipin konvertasiyasına ehtiyac yoxdur, çünki əgər operator, funksiya və ya idarəedici konstruksiya integer tipli arqument tələb edirsə, dəyişənin tipi avtomatik çevrilir. Həmçinin intval() funksiyasının köməkliyi dəyişənin tipini integer tipinə konvertasiya etmək olar.

Məntiqi tip olan FALSE integer tipinə konvertasiya edildikdə 0, TRUE isə 1 qiymətini alır.

<?php
$var = TRUE;
$var1 = FALSE;
echo (int)$var; // Ekrana 1 çıxarılacaq
echo "<br />"; // Yeni sətrə keçid
echo (integer)$var1; // Ekrana 0 çıxarılacaq
?>

Həqiqi ədədlər

Həqiqi ədədlər (həmçinin "float", "double" və ya "real") aşağıdakı sintaksislə təyin edilə bilər:

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
?>

Sətirlər

Sətir simvollar ardıcılığıdır. Sətirlər dörd müxtəlif üsulla yaradıla bilər:

Tək və ya cüt dırnaqlar

Tək dırnaq arasında olan sətrin daxilində yazılmış dəyişənlər və xüsusi simvollar (\' istisna olmaqla) emal edilmir, yəni olduğu kimi görsənir.

<?php
echo 'Sadə sətir';
echo '<br />';
echo 'I\'ll go to school'; // Ekrana I'll go to school çıxarılacaq
echo '<br />';
echo '\n Bu xüsusi simvol tək dırnaq daxilində emal edilmir, yəni olduğu kimi görsənəcək';
echo '<br />';
$number = 10;
echo '$number şagird.'; // Ekrana $number şagird. çıxarılacaq.
?>

Cüt dırnaq arasında olan sətrin daxilində yazılmış dəyişənin qiyməti ekrana çıxarılır:

<?php
$str = "Bakı";
echo "Azərbaycanın paytaxtı $str şəhəridir."; // Ekrana Azərbaycanın paytaxtı Bakı şəhəridir. çıxarılacaq
?>

Bəzən cüt dırnaq arasında olan sətrin daxilində yazılmış dəyişəni olduğu kimi saxlamaq lazım gəlir. Bu halda $ simvolunu tərsinə əyri xəttlə (\) birgə yazmaq lazımdır.

<?php
$str = 'Bakı';
echo "Azərbaycanın paytaxtı \$str şəhəridir."; // Ekrana Azərbaycanın paytaxtı $str şəhəridir. çıxarılacaq
?>

Tərsinə əyri xəttin bir sıra başqa simvollarla birgə tətbiqi xususi şəkildə interpretasiya olunur. Aşağıda tez-tez istifadə olunan simvollar və onların qiyməti göstərilib:

Heredoc

Sətir yaratmağın digər üsulu heredoc sintaksisdən (<<<) istifadədir. <<< operatorundan sonra identifikator yazılmalı, sonra yeni sətrə keçid (Enter düyməsi) edilməlidir. İdentifikatorun adı hərf-rəqəm simvolları və aşağıdan xətt simvolundan ibarət ola bilər və ilk simvol rəqəmlə başlaya bilməz. İdentifikatorun adından sonra heç bir simvol ola bilməz, yəni, məsələn <<<LABEL yazdıq və bundan sonra Enter düyməsinə sıxıb yeni sətirdən mətni yazırıq. Mətni yazdıqdan sonra yenidən Enter düyməsinə sıxırıq və yeni sətrin ilk mövqeyindən həmin identifikatoru yazıb nöqtəli vergül (;) qoyuruq. Bağlanan identifikatordan əvvəl heç bir simvol olmamalıdır, əks halda səhv olacaq.

Heredoc mətndə cüt dırnaqları tərsinə əyri xəttlə (\") yazmağa ehtiyac yoxdur, amma xüsusi simvolları istifadə etmək olar. Dəyişənlər emal edilir, yəni qiyməti ekrana çıxarılır.

<?php
$name = "Emil";
$age = 29;

echo <<<LABEL
  Mənim adım "{$name}"dir. \n$age yaşım var.
LABEL;
?>

Nowdoc

Nowdoc heredoc-a oxşardır, amma nowdoc mətnin daxilində heç bir əvəzetmə həyata keçirilmir, yəni xüsusi simvollar olduğu kimi ekrana çıxarılır və dəyişənin qiyməti emal edilmir.

Nowdoc, həmçinin <<< operatoru ilə başlayır, amma ondan sonra gələn identifikator tək dırnağa alınır. Məsələn, <<<'LABEL'. Yuxarıda Heredoc identifikator üçün yazılanlar nowdoc üçün də eynidir.

<?php
$name = "Emil";
$age = 29;

echo <<<'LABEL'
     Mənim adım "{$name}"dir. \n$age yaşım var.
LABEL;
?>

Dəyişənlərin emalı

Sətir cüt dırnaq və ya heredoc sintaksis vasitəsilə yaradılırsa, o zaman onun daxilində yazılmış dəyişən emal olunur.

<?php
$var = "Salam";
echo "$var, dünya."; // Ekrana Salam, dünya! çıxarılacaq.
?>

Başqa bir nümunəyə baxaq.

<?php
$var = "Sala"; // Salam sözündə m hərfini yazmamışıq
echo "$varm, dünya";
?>

Düşünmək olar ki, Salam, dünya sətri ekrana çıxarılacaq. Lakin belə deyil, çünki $var$varm dəyişənləri PHP interpretator üçün fərqlidir. Baxdığımız nümunədə $varm dəyişəni sadəcə yaradılmayıb. Problemi həll etmək üçün $var dəyişənini fiqurlu mötərizəyə almaq lazımdır.

<?php
$var = "Sala";
echo "{$var}m, dünya"; // Ekrana Salam, dünya çıxarılacaq.
?>

Sətirdəki simvola müraciət

Sətirdəki simvola müraciət etmək üçün [] və ya {} sintaksisindən istifadə etmək lazımdır.

<?php
//Sətrin birinci simvoluna müraciət
$str= 'This is a test.';
echo $first = $str[0]; // T

echo "<br />";

//Sətrin üçüncü simvoluna müraciət
echo $third = $str[2]; // i
	
echo "<br />";

//Sətrin sonuncu simvoluna müraciət
$str = 'This is still a test.';
echo $last = $str[strlen($str)-1]; // .
	
echo "<br />";

//Sətrin sonuncu simvolunun dəyişdirilməsi
$str = 'Look at the sea';
echo $str[strlen($str)-1] = 'e'; // Look at the see
?>

Yuxarıdakı nümunədə strlen() funksiyasından istifadə olunub. Bu funksiya sətrin uzunluğunu və ya sətirdəki simvolların sayını geri qaytarır.

Sətrə konvertasiya

Sətir tipinə konvertasiya üçün (string) və ya strval() funksiyasından istifadə edin.

TRUE məntiqi tipi sətir tipinə konvertasiya edildikdə "1", FALSE isə "" (boş sətir) qiymətini alır.

NULL xüsusi tipi sətir tipinə konvertasiya etdikdə boş sətir qiymətini alır.

Massivlər həmişə "Array" sətrinə konvertasiya olunur, ona görə echo və ya print istifadə edərək massivin (array) tərkibinə baxmaq mümkün deyil. Massivin ayrıca elementinə baxmaq üçün məsələn, echo $arr['foo'] kimi istifadə edin.

Əgər dəyişənin qiyməti tipi sətir olan ədəddirsə və riyazi hesablamada istifadə olunursa, o zaman ya float, ya da integer tipinə çevriləcək.

<?php
$str = "12.6";
$number = 3 + $str;
echo $number // Ekrana 15.6 çıxarılacaq
?>

Əgər sətir rəqəmlə başlamırsa, onda onun qiyməti 0-a bərabərdir.

<?php
echo 15 + "Hello"; // Ekrana 15 çıxarılacaq
?>

Qeyd edim ki, sətir ədəddən başqa digər simvollardan da ibarət ola bilər. Bu zaman PHP interpretatoru sətrin əvvəlindən ədədə uyğun olan hissəni seçir.

<?php
echo "56.5Hello15" + 13.5; // Ekrana 70 çıxarılacaq
?>

NULL xüsusi tipi

Dəyişən aşağıdakı hallarda null hesab edilir:

<?php
$var = 20;
$var = NULL;
echo $var; // İlk öncə $ var dəyişəninə 20 ədədini mənimsətdik. Daha sonra NULL sabiti mənimsətdiyimizə görə ekrana heç nə çıxarılmayacaq. NULL qiymətini qaytarır.
?>

Dəyişənin tipinin müəyyənləşdirilməsi

Həmçinin dəyişənin tipini müəyyənləşdirməyə imkan verən funksiyalar mövcuddur və çox vaxt şərt operatorlarında istifadə olunurlar.

is_int($var)

$var dəyişəninin qiyməti tam ədəd olduğu halda TRUE geri qaytarır.

is_float($var)

$var dəyişəninin qiyməti həqiqi ədəd olduğu halda TRUE geri qaytarır.

is_string($var)

$var dəyişəninin qiyməti sətir olduğu halda TRUE geri qaytarır.

is_numeric($var)

$var dəyişəninin qiyməti ədəd, yaxud ədəddən ibarət sətir olduğu halda TRUE geri qaytarır.

is_bool($var)

$var dəyişəninin qiyməti yalnız true və ya false olduğu halda TRUE geri qaytarır.

is_null($var)

$var dəyişəninin qiyməti NULL olduğu halda TRUE geri qaytarır.

is_array($var)

$var dəyişəninin qiyməti massiv olduğu halda TRUE geri qaytarır.

gettype($var)

$var dəyişəninin tipini geri qaytarır. Geri qaytarılan sətrin ala biləcəyi qiymətlər aşağıdakılardır: "boolean", "integer", "double", "string", "array", "object", "resource", "NULL" və "unknown type"..

Gettype() funksiyası dəyişənin tipini müəyyənləşdirməyə imkan verən universal funksiyadır.

<?php
$number = 10;
$str = "My name is Emil";
echo gettype($number); // Ekrana integer çıxarılacaq
echo "<br>"; // // yeni sətrə keçid
echo gettype($str); // Ekrana string çıxarılacaq
?>

Növbəti dərsi seçib keçid düyməsinə sıxın: