Печать
Категория: Уроки PHP
Просмотров: 1646

PHP поддерживает восемь простых типов данных.

Четыре скалярных типа:

Два смешанных типа:

И два специальных типа:

В PHP обычно тип переменной явно не объявляется. Это делает сам интерпретатор во время выполнения программы в зависимости от контекста, в котором используется переменная.

Тип boolean (булев или логический тип) – это простейший тип выражает истинность значения. Переменная этого типа может иметь только два значения – истина TRUE или ложь FALSE .

Чтобы определить булев тип, используют ключевое слово TRUE или FALSE. Оба регистронезависимы.

<?php
$test = True;
echo $test;
?>

Логические переменные используются в различных управляющих конструкциях (циклах, условиях и т.п.). Иметь логический тип, т.е. принимать только два значения, истину или ложь, могут также и некоторые операторы (например, оператор равенства). Они также используются в управляющих конструкциях (условиях, циклах и т.п.) для проверки каких-либо условий. Например, в условной конструкции проверяется истинность значения оператора или переменной и в зависимости от результата проверки выполняются те или иные действия. Здесь условие может быть истинно или ложно, что как раз и отражает переменная и оператор логического типа.

Тип integer (целый). В начале немного математики. Натуральные числа (естественные числа) — числа, возникающие естественным образом при счёте (как в смысле перечисления, так и в смысле исчисления).
Существуют два подхода к определению натуральных чисел — числа, используемые при:

Отрицательные и нецелые (рациональные, вещественные, …) числа натуральными не являются. Ноль некоторые авторы включают в множество натуральных чисел, другие — нет.

Целые числа — расширение множества натуральных чисел, получаемое добавлением к множеству натуральных чисел нуля и отрицательных чисел вида -n. Необходимость рассмотрения целых чисел продиктована невозможностью, в общем случае, вычесть из одного натурального числа другое — можно вычитать только меньшее число из большего.

Таким образом, целое число (коротко, целое)- это число из множества Z = {..., -2, -1, 0, 1, 2, ...}.

Целое может быть представлено в следующих видах:

Целому может предшествовать знаки - (минус) или + (плюс).

В шестнадцатеричной записи перед числом пишется префикс 0x.

В восьмеричной записи перед числом пишется префикс 0.

В двоичной записи перед числом пишется префикс 0b.

Структурно целое выглядить следующим образом:

десятичное: [1-9][0-9]*
| 0
шестнадцатеричное: 0[xX][0-9a-fA-F]+
восьмеричное: 0[0-7]+
двоичное: 0b[01]+
целое [+-]?decimal
| [+-]?hexadecimal
| [+-]?octal
| [+-]?binary

Пример:

<?php
$a = 1234; // десятеричное число
echo $a,"<br>";
$a = -123; // отрицательное число
echo $a,"<br>";
$a = 0123; // восьмеричное число (эквивалент десятеричного 83)
echo $a,"<br>";
$a = 0x1A; // шестнадцатеричное число (эквивалент десятеричного 26)
echo $a,"<br>";
//$a = 0b11111111; // двоичное число (эквивалент десятеричного 255)
//доступно с PHP 5.4.0

//echo $a,"<br>";
?>

Тип float (с плавающей точкой). Подробно о числах с плавающей точкой (вещественных числах) в PHP можно почитать на http://php.net/manual/ru/language.types.float.php, например.

Тут кратко изложим два момента.

Числа с плавающей точкой (также известные как "float", "double", или "real") могут быть определены следующими синтаксисами:

<?php
$a = 1.2345;
$b = 2.1e3;
$c = 8E-4;

echo "a=",$a,"<br>";
echo "b=",$b,"<br>";
echo "c=",$c,"<br>";
?>

В примере используются e3 и E-4. e3 = 10^3 = 1000. E-4 = 10^(-4) = 0,0001.

Проверять числа с плавающей точкой на равенство проблематично из-за их внутреннего представления. Тем не менее, существуют способы для их сравнения, которые работают несмотря на все эти ограничения.

Для сравнения чисел с плавающей точкой используется верхняя граница относительной ошибки при округлении. Эта величина называется машинной эпсилон или единица округления (unit roundoff) и представляет собой самую маленькую допустимую разницу при расчетах.

$x и $y равны до 6-ти знаков после запятой.

<?php
$x = 12.3456789;
$y = 12.3456780;
$epsilon = 0.000001;

if(abs($x-$y) < $epsilon) {
echo "true";
}
?>

Контрольные вопросы и задания

  1. Протестируйте приведенные примеры изменив значения переменных.
  2. Приведите примеры, когда целесообразно использование типа integer.
  3. Приведите примеры, когда целесообразно использование типа float.