Tipe integer merupakan kumpulan nomor : {..., -2, -1, 0, 1, 2, ...}
.
Integer dapat ditentukan dalam notasi desimal
(basis 10), heksadesimal
(basis 16), oktal
(basis 8) atau biner
(basis 2), bisa juga diawali dengan tanda -
atau +
.
Integer tersedia sejak PHP versi 5.4.0
.
Untuk membuat notasi oktal
, awali dengan angka 0
(nol), untuk membuat notasi heksadesimal
, awali dengan 0x
, sedangkan untuk membuat notasi biner
, awali dengan 0b
.
Umumnya, struktur integer adalah seperti berikut :
desimal : [1-9][0-9]* | 0 heksadesimal : 0[xX][0-9a-fA-F]+ oktal : 0[0-7]+ biner : 0b[01]+ integer : [+-]?desimal | [+-]?heksadecimal | [+-]?oktal | [+-]?biner
Ukuran besarnya nilai maksimum integer tergantung pada platform
yang digunakan. Untuk platform 32 bit
biasanya nilai maksimum integer adalah dua miliar
, sedangkan untuk platform 64 bit
biasanya nilai maksimum integer adalah 9E18
.
PHP
tidak
mendukungunsigned
integer.
Sejak PHP versi 4.4.0
dan 5.0.5
kita dapat menentukan ukuran
integer menggunakan konstanta PHP_INT_SIZE
dan nilai maksimum
integer menggunakan konstanta PHP_INT_MAX
.
Jika nilai yang diberikan tidak termasuk
oktal
, maka nilai selanjutnya diabaikan.
Contoh nilai yang diberikan tidak termasuk oktal
:
<?php
$a = 01090; // 9 tidak termasuk oktal
var_dump($a); // 010 oktal = 8 desimal
?>
Jika nilai integer yang diberikan melebihi batas
maka secara otomatis akan dikonversi
ke tipe yang lebih besar.
Contoh pada platform 32 bit
:
<?php
$a = 2147483647;
var_dump($a); // int(2147483647)
$b = 2147483648;
var_dump($b); // float(2147483648)
?>
Contoh pada platform 64 bit
:
<?php
$a = 9223372036854775807;
var_dump($a); // int(9223372036854775807)
$b = 9223372036854775808;
var_dump($b); // float(9.2233720368548E+18)
?>
Dalam PHP tidak ada
operasi pembagian
(division) untuk data bertipe integer. Contohnya adalah 1 : 2 = 0,5. Nilai 0,5 (float
) tersebut jika dikonversi ke tipe integer akan dibulatkan kebawah
yang dalam hal ini akan menjadi 0
. Agar pembulatan bilangan lebih akurat, gunakan fungsi round()
. Contoh :
<?php
$bagi = 11 / 3;
var_dump($bagi); // float(3.6666666666667)
var_dump( (int) $bagi ); // int(3)
var_dump( round($bagi) ); // float(4)
?>
Jika nilai float yang dikonversi
>=
dari,5
, dengan menggunakan fungsiround()
maka nilai tersebut akan dibulatkan ke atas.
Untuk mengkonversi suatu nilai ke tipe integer dapat menggunakan tag casting (int)
atau (integer)
. Namun, jika operasi, fungsi atau struktur kontrol mengharuskan argumen bertipe integer maka tag casting tidak dibutuhkan
karena nilai akan secara otomatis
dikonversi ke integer.
Selain menggunakan tag casting di atas, kita juga bisa mengkonversi suatu nilai menjadi integer dengan menggunakan fungsi intval()
.
<?php
$bagi = 11 / 3;
var_dump($bagi); // float(3.6666666666667)
var_dump( intval($bagi) ); // int(3)
var_dump( round($bagi) ); // float(4)
?>
Jangan pernah mengkonversi pecahan yang tidak diketahui
ke integer karena kadang menampilkan hasil yang tidak sesuai
. Contoh :
<?php
$a = ( (0.1 + 0.7) * 10 ); // 8
var_dump( (int) $a ); // int(7)
?>
Jika suatu resource
dikonversi menjadi integer maka hasilnya akan menjadi nomor unik
pada saat runtime PHP.
Jika mengkonversi boolean ke integer maka TRUE
akan menjadi 1
dan FALSE
akan menjadi 0
, begitupun sebaliknya. Contoh :
<?php
$a = true;
$b = false;
$c = 1;
$d = 0;
var_dump( (int) $a ); // int(1)
var_dump( (int) $b ); // int(0)
var_dump( (bool) $c ); // bool(true)
var_dump( (bool) $d ); // bool(false)
?>