ceidot - Integer
 
Ana Sayfa
Anlatim
Video
Uygulamalar
uyeol
Röportaj
easyportal
Forum
desfa
Destek
linklistesi
vidbs
makphp
=> Temel Söz Dizimi
=> Htmlden Ayrılış
=> Deyim Ayrımı
=> Açıklamalar
=> Türler
=> Boolean
=> Integer
=> Float
=> String
=> Array
=> Object
=> Resource
=> Degiskenler
=> Temeller
=> Öntanımlı Değişkenler
=> Değişken Etki Alanı
=> Değişken Değişkenler
=> Dış Kaynaklı Değişkenler
=> Sabitler
=> Söz Dizimi
=> Sihirli Sabitler
Başlarken
Yapılandırma ve Kurulum
Download
263464536435
Sayaç

Bir integer türünde değer şu kümeden bir tamsayıdır: Z = {..., -2, -1, 0, 1, 2, ...}.

Bunlara da bakınız:

Syntax ¶

integer türünde değerler onluk, sekizlik veya onaltılık tabanda belirtilebilirler ve önlerinde isteğe bağlı bir + veya - işareti bulunabilir.

Sekizlik gösterimde sayıların önüne 0 (sıfır), onaltılık gösterimde ise 0x getirilir.

Örnek 1 - Tamsayı sayıllar

<?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)
?>

Biçimsel olarak integer sayılların yapısı:

onluk     : [1-9][0-9]*
          | 0

onaltılık : 0[xX][0-9a-fA-F]+

sekizlik  : 0[0-7]+

tamsayı   : [+-]?onluk
          | [+-]?onaltılık
          | [+-]?sekizlik

Bir integer 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. integer türün genişliği PHP 4.4.0'da PHP_INT_SIZE sabitine ve olası en büyük değeri ise PHP 5.0.5'tePHP_INT_MAX sabitine atanmıştır.

Uyarı

Sekizlik bir değer içinde geçersiz bir rakam kullanılmışsa (8, 9 gibi) o ve kalan tüm rakamlar yok sayılır.

Örnek 2 - Sekizlik garabeti

<?php
var_dump
(01090); // sekizlik: 010, onluk: 8
?>

Tamsayılarda taşma ¶

PHP, integer türünde bir değerin bellekte integer 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 3 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 4 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)
?>
Uyarı

Ne yazık ki, bunun negatif sayılar için her zaman çalışmaması şeklinde kendini gösteren bir PHP yazılım hatası mevcuttu. Örneğin, -50000 * $milyon işleminin sonucu -429496728 olmaktadır. Ancak, her iki terimin işareti pozitif olduğunda hiçbir sorun çıkmamaktadır.

Bu hata PHP 4.1.0'da düzeltilmiştir.

PHP'de sonucun integer türünde elde edileceği bir bölme işlemi mevcut değildir. 1/2 işleminin sonucu float türünde 0.5 değeridir. Bu değer (integer) ile çarpıtılarak aşağı 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)
?>

integer türüne dönüşüm ¶

Bir değeri doğrudan integer 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 tamsayı değer gerektiren bir işlev veya denetim yapısı, değeri özdevinimli olarak integer türüne dönüştürecektir. Ayrıca, bir değer integer türüne intval() işleviyle de dönüştürülebilir.

Ayrıca, Tür Dönüşümü bölümüne de bakınız.

boolean 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üşüm ¶

float türünden integer türüne dönüşümde sayı sıfıra yaklaştırılarak yuvarlanır.

Dönüşüm sonucu integer 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 integer türünde tam bir sonuç vermeyeceğinden sonuç tanımsızdır. Bu durumda ne bir uyarı ne de bir bilgi verilir!

Uyarı

Ondalık kısmı integer 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ı.

string türünden dönüşüm ¶

Dizgelerin sayılara dönüşümü bölümüne bakınız.

Diğer türlerden dönüşüm ¶

Dikkat

Diğer türlerden integer 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.

 

Bugün 57754 ziyaretçi (114377 klik) kişi burdaydı!
Bu web sitesi Bedava-Sitem.com ile ücretsiz oluşturuldu. Siz de kendi web sitenizi ister misiniz?
Ücretsiz kayıt ol