Tür Dönüşümü
 
  PHP değişken bildiriminde tür tanımlamayı gerektirmez. Bu durumda
  değişkenin türü saklanan değere göre saptanır. Yani,
  string türünde bir değer  $var değişkenine
  atanırsa, $var string türünde bir değişken
  haline gelir. $var değişkenine bir int
  değer atanırsa, $var int türünde bir
  değişken haline gelir.
 
 
  PHP belli bağlamlarda bir değerin türünü otomatik olarak dönüştürmeyi
  deneyebilir:
  
   - 
    Sayısal
   
- 
    Dizgesel
   
- 
    Mantıksal
   
- 
    Tamsayılar ve dizge
   
- 
    Karşılaştırmalı
   
- 
    İşlevsel
   
Bilginize: 
  
   Bir değerin farklı bir türde yorumlanması gerektiğinde değerin kendisinde
   tür değişikliği yapılmaz.
  
 
 
  Bir değişkeni belli bir türde değerlendirilmeye zorlamak için
  Tür Çarpıtma, bir
  değişkenin türünü değiştirmek için ise settype()
  işlevinin açıklamasına bakılabilir.
 
 
  Sayısal bağlamlar
  
   Aritmetik işleçlerin
   kullanıldığı bağlamlardır.
  
  
   Bu bağlamlarda, terimlerden biri float türündeyse her
   iki terim float olarak ele alınır ve sonuç float
   türünde olur. Aksi takdirde, terimler int olarak
   yorumlanır ve sonuç int türünde olur. PHP 8.0.0 ve sonrasında,
   terimlerden birinin yorumlanamaması TypeError
   istisnasına yol açabilir.
  
  
 
 
 
  Tamsayı ve dizge bağlamlar
  
   Bitsel işleç kullanılan
   bağlamlardır.
  
  
   Bu bağlamlarda tüm terimler string türündeyse sonuç da
   string türünde olur. Aksi takdirde, terimler int
   türünde yorumlanır ve sonuç da int türünde olur. PHP 8.0.0 ve
   sonrasında, terimlerden birinin yorumlanamaması
   TypeError istisnasına yol açabilir.
  
  
 
 
  İşlevsel bağlamlar
  
   Bir değerin belli bir türdeki bir bağımsız değişkene veya özelliğe
   atandığı veya dönüş türü bildiren bir işlevden döndürüldüğü bağlamlardır.
  
  
   Bu bağlamlarda değerin bir türü olmalıdır. Bunun iki istisnası vardır.
   İlk istisna: Değer int türündeyse ve bildirilen tür
   float ise tamsayı gerçek sayıya dönüştürülür.
   İkinci istisna: Bildirim türü sayıl
   türlerden biriyse değer bir sayıl türe dönüştürülebilir, zorlayıcı tür
   kipi etkinse (öntanımlıdır), değer uygun bir sayıl türe dönüştürülebilir.
   Bu davranışın açıklaması aşağıda bulunabilir.
  
  Uyarı
   
    Dahili işlevler sayıl türleri
    otomatik olarak null'a dönüşmeye zorlar; bu davranışın PHP 8.1.0
    itibariyle KULLANIMI ÖNERİLMEMEKTEDİR.
   
   
  
   Basit tür bildirimli zorlayıcı tür kipi
   
    - 
     
      bool türünde bildirim: değer bool türünde
      değerlendirilir.
     
    
- 
     
      int türünde bildirim: dönüşüm olması gerektiği gibi ise
      değer int türünde değerlendirilir. Örnek:
      Sayısal dizgeler.
     
    
- 
     
      float türünde bildirim: dönüşüm olması gerektiği gibi ise
      değer float türünde değerlendirilir. Örnek:
      Sayısal dizgeler.
     
    
- 
     
      string türünde bildirim: değer string türünde
      değerlendirilir.
     
    
 
  
   Birleşim türleriyle zorlanmış tür dönüşümü
   
    strict_types etkin olduğunda sayıl tür bildirimlerine
    örtük olarak sınırlı tür zorlamaları uygulanır. Değerin asıl türü
    birleşimin (union) parçası değilse hedef tür aşağıdaki
    öncelik sırasına göre belirlenir:
    
     - 
      
       int
      
     
- 
      
       float
      
     
- 
      
       string
      
     
- 
      
       bool
      
     
    Tür hem birleşimde hem de değerde mevcutsa, PHP'nin mevcut tür sınama
    anlamlandırmasına uygun olarak değerin türü zorlanarak tür seçilir,
    değilse birleşimin sonraki türü denenir.
   
   
Dikkat
    
     Bir istisna olarak, değer bir dizgeyse ve hem int hem de float
     birleşime dahilse tercihli tür mevcut "sayısal dizge"
     anlamlandırmasına göre belirlenir. Örneğin, "42"
     değeri için int seçilirken, "42.0"
     değeri için float seçilir.
    
    
   Bilginize: 
    
     Yukarıdaki tercih listesine dahil olmayan türler örtük zorlama için
     seçilebilir hedefler değildir. Özellikle, null,
     false ve true değerlere hiçbir örtük zorlama
     uygulanmaz.
    
   
   
    Örnek 1 - Birleşimin türlerinden birine zorlama örneği
    
<?php
// int|string
42    --> 42          // kesin tür
"42"  --> "42"        // kesin tür
new ObjectWithToString --> "__toString() sonucu"
                      // nesne int ile uyumsuz, son çare: string
42.0  --> 42          // float ile int uyumlu
42.1  --> 42          // float ile int uyumlu
1e100 --> "1.0E+100"  // float; int için çok büyük, son çare: string
INF   --> "INF"       // float; int için çok büyük, son çare: string
true  --> 1           // bool ile int uyumlu
[]    --> TypeError   // array ile int veya string uyumlu değil
// int|float|bool
"45"    --> 45        // int sayısal dizge
"45.0"  --> 45.0      // float sayısal dizge
"45X"   --> true      // sayısal dizge değil, son çare: bool
""      --> false     // sayısal dizge değil, son çare: bool
"X"     --> true      // sayısal dizge değil, son çare: bool
[]      --> TypeError // array ile int, float veya bool uyumlu değil
?>
     
    
   
  
 
  Tür Çarpıtma
  
   İstenen türün ismi yaylı ayraçlar arasında türü çarpıtılacak değişkenin
   önüne yazılır.
  
  
  
   İzin verilen çarpıtmalar:
  
  
   - (int)- int türüne dönüşüm
- (bool)- bool türüne dönüşüm
- (float)- float türüne dönüşüm
- (string)- string türüne dönüşüm
- (array)- array türüne dönüşüm
- (object)- object türüne dönüşüm
- (unset)- NULL'a dönüşüm
Bilginize: 
   
    (integer) çarpıtması (int) için
    takma addır. (boolean) çarpıtması
    (bool) için takma addır. (binary)
    çarpıtması (string) için takma addır.
    (double) ve (real) çarpıtması
    (float) için takma addır. Meşru tür isimleri
    kullanılmayan bu çarpıtmaların kullanımı önerilmemektedir.
   
  
  Uyarı
   
    PHP 8.0.0 ve sonrasında (real) dönüşüm takma adının
    kullanımı önerilmemektedir.
   
   
  Uyarı
   
    (unset) çarpıtması PHP 7.2.0 ve sonrasında
    önerilmemektedir. (unset) çarpıtması değişken veya
    çağrıya NULL değer atanmasıyla aynıdır.
    (unset) çarpıtması PHP 8.0.0 sürümünde kaldırılmıştır.
   
   
  Dikkat
   
    (binary) çarpıtması ve b öneki
    ileriye dönük desteklenmektedir. Halen (binary)
    çarpıtması (string) ile aynı olsa da buna
    güvenilmemelidir.
   
   
  Bilginize: 
   
    Çarpıtmada yaylı ayraçların içinde sekmelere ve boşluklara izin
    verildiğinden aşağıdaki iki deyim eşdeğerdir:
    
   
  
  
  Bilginize: 
   
    Bir değişkenin türünü string türüne çarpıtmak yerine
    değişkeni çift tırnak içine almak aynı sonucu sağlar:
   
   
  
  
   Belli türler arasında çarpıtma yapılırken tam olarak ne olup bittiği
   açıkça belli olmayabilir. Daha fazla bilgi için şu bölümlere bakınız:
  
  
  Bilginize: 
   
    PHP dizgelerde dizge içi konumlar üzerinden dizilerdeki gibi indislemeyi
    desteklemektedir. Aşağıdaki örnekler tüm PHP sürümlerinde çalışır:
   
   
   
    Daha ayrıntılı bilgi için bkz:
    Karakter Karakter
    Dizgeye Erişim.