int
Bir int türünde değer şu kümeden bir tamsayıdır: ℤ = {..., -2, -1, 0, 1, 2, ...}.
Bunlara da bakınız:
int türünde değerler onluk, sekizlik veya onaltılık tabanda belirtilebilirler. değil işleci negatif bir int belirtmekte kullanılabilir.
Sekizlik gösterimde sayıların önüne 0
(sıfır),
onaltılık gösterimde 0x
ve ikil gösterimde
0b
getirilir.
PHP 7.4.0'dan itibaren, tamsayı değişmezleri, değişmez değerlerin daha
iyi okunabilirliği için rakamlar arasında alt çizgi (_
)
içerebilir. Bu alt çizgiler PHP'nin tarayıcısı tarafından kaldırılır.
Örnek 1 - Tamsayı değişmezler
<?php
$a = 1234; // onluk tabanda bir sayı
$a = -123; // negatif bir sayı
$a = 0123; // sekizlik tabanda bir sayı (onluk: 83)
$a = 0x1A; // onaltılık tabanda bir sayı (onluk: 26)
$a = 0b11111111; // ikil sayı (onluk: 255)
$a = 1_234.567; // onluk tabanda bir sayı (PHP 7.4.0 ve sonrası)
?>
Biçimsel olarak PHP 7.4.0 ve sonrasında int değişmezlerin yapısı (öncesinde altçizgilere izin verilmezdi):
onluk : [1-9][0-9]*(_[0-9]+)* | 0 onaltılık : 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)* sekizlik : 0[0-7]+(_[0-7]+)* ikil : 0[bB][01]+(_[01]+)* tamsayı : onluk | onaltılık | sekizlik | ikil
Bir intr türün genişliği platforma göre değişir. 32 bitlik
sistemlerde azami değer 2 milyon civarında iken 64 bitlik sistemlerde 9E18
civarındadır. PHP işaretsiz tamsayıları (C'deki unsigned) desteklemez.
int türün genişliği PHP_INT_SIZE
sabitine, olası en büyük değeri PHP_INT_MAX
sabitine ve en küçük değeri ise PHP_INT_MIN
sabitine atanmıştır.
PHP, int türünde bir değerin bellekte int türüne ayrılan genişliğe sığmadığını saptarsa float türünde bir değer olarak ele alır ve bu durum yapılan bir işlem sırasında ortaya çıkmışsa işlemden dönen değer float türünde olur.
Örnek 2 - 32 bitlik sistemlerde tamsayı taşması
<?php
$büyük_sayı = 2147483647;
var_dump($büyük_sayı);
$büyük_sayı = 2147483648;
var_dump($büyük_sayı);
$milyon = 1000000;
$büyük_sayı = 50000 * $million;
var_dump($büyük_sayı);
?>
Örnek 3 64 bitlik sistemlerde tamsayı taşması
<?php
$büyük_sayı = 9223372036854775807;
var_dump($büyük_sayı); // int(9223372036854775807)
$büyük_sayı = 9223372036854775808;
var_dump($büyük_sayı); // float(9.2233720368548E+18)
$milyon = 1000000;
$büyük_sayı= 50000000000000 * $milyon;
var_dump($büyük_sayı); // float(5.0E+19)
?>
PHP'de sonucun int türünde elde edileceği bir bölme
işleci mevcut değildir, bunu sağlamak için intdiv()
işlevini kullanın. 1/2
işleminin sonucu
float türünde 0.5
değeridir. Bu değer
(int) ile çarpıtılarak sıfıra yuvarlamak suretiyle bir
tamsayıya dönüştürülebilirse de round() işlevini
kullanırsanız dönüşümün nasıl yapılacağını kendiniz belirleyebilirsiniz.
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
int
türüne dönüşüm
Bir değeri doğrudan int türüne dönüştürmek için
(int)
veya (integer)
çarpıtmasını
kullanabilirsiniz. Ancak, çoğu durumda türü çarpıtmak gerekmez, bir
int değer gerektiren bir işlev veya denetim yapısı, değeri
kendiliğinden int türüne dönüştürecektir. Ayrıca, bir değer
int türüne intval() işleviyle de
dönüştürülebilir.
Bir resource bir inte sayıya dönüştürülürse, sonuç, PHP tarafından çalışma anında özkaynağa atanan eşsiz özkaynak numarası olacaktır.
Ayrıca, Tür Dönüşümü bölümüne de bakınız.
bool
türünden dönüşüm
false
, 0
'a (sıfır); true
, 1
'e
(bir) dönüştürülür.
float
türünden dönüşümfloat türünden int türüne dönüşümde sayı sıfıra yaklaştırılarak yuvarlanır.
Dönüşüm sonucu int türüne ayrılan genişliğe (normalde
32 bitlik sistemlerde +/- 2.15e+9 = 2^31
,
64 bitlik sistemlerde ise +/- 9.22e+18 = 2^63
)
sığmıyorsa, float türün hassasiyeti int türünde
tam bir sonuç vermeyeceğinden sonuç tanımsızdır. Bu durumda ne bir uyarı
ne de bir bilgi verilir!
Bilginize:
int türüne çarpıtıldığında NaN ve Infinity daima sıfır olacaktır.
Ondalık kısmı int türüne asla dönüştürmeyin, yoksa beklenmedik sonuçlar elde edebilirsiniz.
<?php
echo (int) ( (0.1+0.7) * 10 ); // çıktısı: 7!
?>
Ayrıca bakınız: Kayan noktalı sayılarda hassasiyet uyarısı.
Dize sayısal
veya öncü sayısal ise, karşılık gelen tamsayı değerine çözümlenir,
aksi takdirde sıfıra (0
) dönüştürülür.
null
daima sıfıra dönüşür (0
).
Diğer türlerden int türüne dönüşümün nasıl davranacağı henüz kesin olarak tanımlanmamıştır. Gözlemlediğiniz bir davranışın doğruluğuna güvenmeyiniz, ileride bu davranış hiçbir bilgi verilmeden değiştirilebilir.