Dəyişənin tipinin müəyyən edilməsi və dəyişdirilməsi

Dəyişənin tipinin müəyyən edilməsi

Əvvəlki mövzuda izah edilmiş imkanlardan başqa standarta daxil edilmiş, dəyişənin tipini müəyyən etməyə imkan verən bir neçə funksiya da mövcuddur. Onlardan tez-tez şərti keçid operatorlarında istifadə edilir.

  • is_int($v)$v tam ədəd olarsa true qaytarır
  • is_infinite($v)$v dəyişəninin qiyməti sonsuzluq – INF olarsa true qaytarır
  • is_nan($v)$v dəyişəninin qiyməti icazə verilməyən ədəd – NAN olarsa true qaytarır
  • is_string($v)$v dəyişəni sətir tipli olarsa true qaytarır
  • is_numeric($v)$v dəyişəni ədəd olarsa və ya yalnız rəqəmlər və nöqtədən ibarət sətir tipli dəyişən olarsa true qaytarır. PHP-də daxilində ədəd olan sətir tipli dəyişənlərlə də sadə riyazi əməllər yerinə yetirmək mümkündür. Buna görə də bu funksiyanı is_integer()is_number() funksiyaları ilə birgə istifadə etmək məsləhət görülür.
  • is_bool($v)$v dəyişəninin tipi yalnız və yalnız true və ya false olarsa true qaytarır
  • is_scalar($v)$v dəyişəninin tipi yuxarıda sadalanan tiplərdən biri, yəni sadə (skalyar) tip olarsa true qaytarır
  • is_null($v)$v dəyişəninə null mənimsədilibsə bu funksiya true qaytarır. Diqqət yetirmək lazımdır ki, belə dəyişənləri is_scalar() funksiyası ilə yoxladıqda nəticə false olur, çünki null skalyar kəmiyyət deyil.
  • is_array($v)$v dəyişəni massiv olarsa true qaytarır
  • is_object($v)$v dəyişənində obyektə keçid saxlanırsa true qaytarır
  • gettype($v)$v dəyişəninin tipinə uyğun olaraq “array”, “object”, “integer”, “double”, “string”, “boolean”, “null” və s. və ya tipi məlum deyilsə “unknown type” yazılarını qaytarır. “unknown type” yazısı dəyişənin tipi PHP-yə daxil edilmiş heç bir tipə uyğun olmayan zaman qaytarılır. Belə hal məsələn, PHP dilinin imkanlarını genişləndirmək üçün əlavə modulların qoşulması səbəbi ilə baş verə bilər.

Dəyişənin tipinin dəyişdirilməsi

PHP-də verilmiş dəyişənin tipini digər standart tiplərdən birinə çevirməyə çalışan universal funksiya mövcuddur: settype($var, $type)

Bu funksiya $var dəyişənini $type tipinə uyğunlaşdırmağa çalışır. Burada $type gettype() funksiyasının boolean-dan başqa qaytara biləcəyi qiymətlərdən biridir. settype() işini uğurla yerinə yetirə bilmədikdə false qaytarır. Bu məsələn, $var sətir tipli “ədəd olmayan” dəyişəndirsə settype($var, "integer") false qaytaracaq.

PHP-də settype() funksiyasından başqa dəyişəni digər tipə uyğunlaşdırmaq üçün xüsusi funksiyalar da mövcuddur.

floatval($var)
Bu funksiya $var dəyişənini həqiqi ədədə çevirməyə çalışır. Bu funksiyanın doubleval() kimi başqa adı da var. Hər iki funksiya tamamilə eyni işi görür.

strval($var)
Bu funksiya $var dəyişənini sətir tipinə çevirir.

intval($var[, $base])
Funksiya $var dəyişənini integer tipli dəyişənə çevirir. $base arqumenti nəticənin hansı əsaslı hesablama sisteminə uyğun qaytarılacağını müəyyən edir. Əgər funksiyaya xüsusi olaraq $base arqumenti ötürülməyibsə, nəticə susmaya görə 10-luq say sistemində qaytarılır. Ancaq $base arqumentini məsələn, 8 kimi ötürsək nəticəni 8-lik say sistemində əldə etmiş olacağıq:

 echo intval(42); // 42
 echo intval(42, 8); // 42
 echo intval('42', 8); // 34

Göstərilən funsiyalardan başqa PHP-də tipin digər tipə uyğunlaşdırılmasının C dilindəkinə uyğun sintaksisi də mövcuddur. Bu zaman lazım olan tip dəyişənin qarşısında mötərizədə yazılır:

 $value = 3.14;
 echo (int)$value; // 3 (integer)
 echo (string)$value; // 3.14 (string)
 echo (boolean)$value; // 1 (boolean) 

Buna bənzər sintaksislərin siyahısı aşağıdakı cədvəldə göstərilmişdir:

Tipi dəyişmə əməliyyatı Əməliyyat
(int)
(integer)
Tam ədədə çevirmək
(bool)
(boolean)
Məntiqi tipə çevirmək
(float)
(double)
(real)
Həqiqi ədədə çevirmək
(string) Sətir tipinə çevirmək
(array) Massivə çevirmək
(object) Obyektə çevirmək
(unset) null-a çevirmək