Изменение типа переменной (жонглирование)
PHP не требует (или не поддерживает) указания типа переменной в объявленной переменной; тип переменной определяется контекстом, в котором переменная используется, то есть, если вы присваиваете переменной var значение строки; of var становится строковой переменной. Если вы присвоите var целое число, оно станет целочисленной переменной.
Примером автоматического преобразования типов переменных PHP является оператор сложения «+». Если какой-либо операнд имеет двойное значение, то все операнды оцениваются как двойные, и результат также является двойным. В противном случае операнды будут считаться целыми числами, а результат будет целым числом. Обратите внимание, что это не влияет на тип переменной каждого операнда, единственное изменение заключается в том, как операнды обрабатываются во время вычисления.
$foo = "0"; // $foo — строка со значением «0» (ASCII 48)
$foo++; // $foo — строка со значением «1» (ASCII 49)
$foo += 1; // $foo теперь является целым числом (2)
$foo = $foo + 1.3; // $foo теперь является числом типа double (3.3)
$foo = 5 + «10 Little Piggies» // $ foo — целое число; (15)
$foo = 5 + «10 маленьких свиней» // $foo — целое число (15);
Если вам кажется, что последние два выражения в приведенном выше примере выглядят немного странно, обратитесь к разделу «Преобразование строк».
Если вы хотите принудительно оценить переменную как фиксированный тип, см. раздел «Приведение типов». Если вы хотите изменить тип переменной, обратитесь к описанию функции «settype()».
Определить тип переменной
Поскольку PHP сам определяет типы переменных и обычно преобразует их по мере необходимости, тип конкретной переменной не всегда очевиден. PHP включает функции для определения типа этой переменной. Это функции gettype(), is_long(), is_double(), is_string(), is_array() и is_object().
Тип литья
Приведение типов в PHP примерно такое же, как и в языке C: в скобках перед переменной, которую нужно привести, напишите требуемый тип.
$foo = 10; // $foo — целое число
$bar = (double) $foo // $bar — число типа double;
Допускаются следующие методы принуждения:
(int), (integer) – приведение к целому числу
(real), (double), (float) – принудить к удвоению
(строка) – приведение к строке
(массив) – приведение к массиву
(объект) – принуждение к объекту
Обратите внимание, что в круглых скобках разрешены табуляции и пробелы, поэтому следующие операторы эквивалентны:
$foo = (int) $bar;
$foo = (int) $bar;
Преобразование строк
Когда строка оценивается как числовое значение, ее результат и тип определяются, как описано ниже.
Если эта строка содержит символы «.», «e» или «E», она рассматривается как переменная двойного типа, в противном случае она рассматривается как целое число.
Значение этой строки определяется префиксом. Если строка начинается с любых допустимых числовых данных, то числовые данные являются значением, по которому вычисляется строка. В противном случае значение равно нулю. Действительные числовые данные следуют следующему обозначению, за которым следует одна или несколько цифр (которые могут включать десятичную точку), а затем необязательный показатель степени. Показатель степени состоит из одной или нескольких цифр, за которыми следует «e» или «E».
$foo = 1 + "10.5"; // $foo — двойное число (11.5)
$foo = 1 + "-1.3e3" // $foo — двойное число (-1299)
$foo = 1 + "bob -1.3"; e3"; // $foo — целое число (1)
$foo = 1 + «bob3»; // $foo — целое число (1)
$foo = 1 + «10 маленьких свиней»; // $foo — целое число ( 11)
$foo = 1 + «10 поросят» // $foo — целое число (11
// Эта строка содержит символ «e»)
;
Для получения дополнительной информации см. раздел руководства Unix по strtod(3).