Integer

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 mendukung unsigned 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 fungsi round() 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)
?>