)
Типы данных
Несмотря на гибкость РНР в отношении переменных, с которыми можно обращаться то как с текстовыми значениями, то как с числами, существует набор типов данных, которые назначаются при работе с переменными. Есть следующие восемь типов:
• string
• integer
• double
• array
• boolean
• object
• resource
• unknown
Тип double в РНР соответствует значению с плавающей точкой, хранящемуся с «двойной точностью». Поскольку в РНР нет чисел с «одинарной точнос- это отличие не имеет большой важности.
Тип, который РНР назначил переменной, можно проверить с помощью
функции gettype():
<?php
$Variable = "This is some text"; |cho(gettype($Variable));
Этот код выводит string.
Можно также установить тип явным образом посредством родственной функции settype(). Ей требуется передать имя переменной и тип, который надо для нее установить:
$Change = "2"; settype($Change, integer); echo(gettype($Change)); echo(SChange);
Преобразование типа
В PHP есть также операторы преобразования типа, которые позволяют указать РНР на необходимость действовать со значением одного типа как если бы оно имело другой тип. Оператор преобразования типа представляет собой имя того типа, к которому требуется преобразовать данные, заключенное в круглые скобки:
• (string)
• (integer)
• (double)
• (boolean)
У некоторых из этих операторов есть сокращенные версии:
• (int)
• (bool)
Они используются так: <?php
$а = "123.456";
echo((int)$a); ?>
Этот код выводит 123, потому что РНР преобразовал строковое значение «123.456» в целое число.
При выполнении преобразований РНР иногда ведет себя интересным образом. Рассмотрим следующий код:
SChange = "2 Coffee Candies"; settype($Change( integer); echo(gettype(SChange)); echo($Change);
Вместо ошибки эта программа выводит integer и 2. Для того чтобы получить целое число из текста, последний необходимо избавить от посторонней информации, которую в число преобразовать нельзя, но РНР находит число в начале строки и использует его. Такое явное преобразование типа можно обеспечить без помощи
$Variable1 3;
$Variable2 "2 Coffee Candies"; SSumTotal = JVariablel + JVariable2;
Сумма будет равна 5, потому что РНР обнаруживает операцию сложения и понимает, что таково ваше намерение. Он выполняет преобразование $Vari- able2 в целое число, а затем складывает две переменные. В других языках программирования это легко могло бы привести к ошибке, но в РНР из-за слабой типизации этого не происходит.