Целочислено е всяко число от множеството Z = {..., -2, -1, 0, 1, 2, ...}.
Вж. също: Цели числа с произволна дължина / GMP, Числа с плаваща запетая и Произволна точност / BCMath
Целите числа могат да бъдат дефинирани в десетична (с основа 10), шестнайсетична (с основа 16) или осмична (с основа 8) бройна система, незадължително предшествани от знак (- или +).
Ако използвате осмична бройна система, трябва да предшествате числото с 0 (нула), а за да използвате шестнайсетична система, трябва да го предшествате с 0x.
Example #1 Целочислени литерали
<?php
$a = 1234; // десетично число
$a = -123; // отрицателно число
$a = 0123; // осмично число (еквивалентно на десетично 83)
$a = 0x1A; // шестнайсетично число (еквивалентно на десетично 26)
?>
Възможните шаблони за цели числа са:
десетично : [1-9][0-9]* | 0 шестнадесетично : 0[xX][0-9a-fA-F]+ осмично : 0[0-7]+ цяло число : [+-]?decimal | [+-]?hexadecimal | [+-]?octal
Размерът на целите числа е платформено-зависим, макар че обикновено максималната стойност е около два милиарда (т.е. 32 бита със знак). PHP не поддържа беззнакови цели числа. Текущият размер на целите числа може да бъде установен посредством PHP_INT_SIZE, а максималната стойност - от PHP_INT_MAX, след PHP 4.4.0 и PHP 5.0.5.
Ако на осмично число бъде подадена невалидна цифра (т.е. 8 или 9), остатъкът от числото ще бъде пренебрегнат.
Example #2 Осмична особеност
<?php
var_dump(01090); // осмично 010 = десетично 8
?>
Ако укажете число извън обхвата на целочисления тип, то ще бъде интерпретирано като число с плаваща запетая. Също така, ако извършите операция, чийто резултат е число извън обхвата на целочисления тип, то също ще бъде върнато в плаващ тип.
<?php
$large_number = 2147483647;
var_dump($large_number);
// изход: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// изход: float(2147483648)
// работи също за цели числа, указани в шестнадесетична система, в интервала от 2^31 до 2^32-1:
var_dump( 0xffffffff );
// output: float(4294967295)
// не работи за цели числа, указани в шестнадесетична система, за стойности над 2^32-1:
var_dump( 0x100000000 );
// изход: int(2147483647)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number);
// изход: float(50000000000)
?>
За нещастие, в PHP съществуваше грешка, така че това не работи винаги както трябва, когато са намесени отрицателни числа. Например: когато правите -50000 * $million, резултатът ще бъде -429496728. Все пак, когато и двата операнда са положителни, няма проблем.
Грешката е поправена в PHP 4.1.0.
В PHP няма оператор за целочислено деление. 1/2 дава плаващо 0.5. Можете да преобразувате стойността до цяло число, така че тя винаги да се закръгля надолу, или пък да използвате функцията round().
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
За да превърнете изрично стойност в цяло число, използвайте преобразуването (int) или (integer). В повечето случаи обаче няма нужда да се използва преобразуване, понеже стойността ще бъде преобразувана автоматично, когато даден оператор, функция или контролна структура изискват целочислен аргумент. Можете също да превърнете стойност в цяло число посредством функцията intval().
Вж. също Манипулации с типове.
FALSE ще даде 0 (нула), а TRUE ще даде 1 (едно).
При превръщане от плаващо в цяло, числото ще бъде закръглено към нулата (надолу).
Ако плаващото е извън обхвата на цяло число (обикновено +/- 2.15e+9 = 2^31), резултатът е недефиниран, тъй като плаващото не е имало достатъчно точност, за да даде правилен целочислен резултат. В този случай няма да бъде изведено нито предупреждение, нито дори и съобщение!
Никога не преобразувайте неизвестна дроб в цяло число, защото понякога това може да доведе до неочаквани резултати.
<?php
echo (int) ( (0.1+0.7) * 10 ); // извежда 7!
?>
За повече информация, вижте предупреждението за плаваща точност.
Поведението при превръщане от други типове в цяло число е недефинирано. В момента, поведението е същото, както ако стойността първо е била превърната в булев. Все пак, не разчитайте на това поведение, тъй като в бъдеще то може да се промени без предупреждение.