Приднестровская поддержка XOOPS
Что будет, если к числу прибавить строку?
$Str = "5"; // Строка
$Number = 3; // Число
$Str2 = $Number + $Str; // Переменная содержит число 8
$Str3 = $Str + $Number; // Переменная содержит число 8
Результат будет абсолютно другим, нежели в JavaScript, так как оператор + в PHP не используется для конкатенации строк. В этом случае интерпретатор попытается преобразовать переменные к одному типу данных, а затем выполнить операцию. В нашем случае переменная $Str, имеющая тип string (строка), будет преобразована к типу integer (число), а затем будет произведена операция сложения двух чисел.
Но что будет, если строку невозможно преобразовать в число?
$Str = "Привет"; // Строка
$Number = 3; // Число
$Str2 = $Number + $Str; // Переменная содержит число 3
$Str3 = $Str + $Number; // Переменная содержит число 3
Как видим, строка, не содержащая числа, преобразуется к числу 0. А что бу-
дет, если из числа вычесть строку, число умножить на строку или число раз-
делить на строку?
$Number = 15;
$Str = "5";
$Str2 = $Number - $Str; // Переменная содержит число 10
$Str3 = $Number * $Str; // Переменная содержит число 75
$Str4 = $Number / $Str; // Переменная содержит число 3
Итак, интерпретатор попытается преобразовать строку в число, а затем вычислить выражение.
В какой последовательности будут указаны число и строка, не важно:
$Str5 = $Str * $Number; // Переменная все равно содержит число 75
Но что будет, если в строке будут одни буквы?
$Number = 15;
$Str = "Строка";
$Str2 = $Number - $Str; // Переменная содержит число 15
$Str3 = $Str - $Number; // Переменная содержит число -15
$Str4 = $Number * $Str; // Переменная содержит число 0
$Str5 = $Str * $Number; // Переменная содержит число 0
$Str6 = $Number / $Str; // Ошибка деления на 0
$Str7 = $Str / $Number; // Переменная содержит число 0
С одной стороны, хорошо, что интерпретатор делает преобразование типов данных за нас. Но с другой стороны, можно получить результат, который вовсе не планировался. По этой причине лучше оперировать переменными одного типа, а если необходимо делать преобразования типов, то делать это самим.
Для преобразования типов данных можно использовать функцию settype(), которая преобразует тип переменной в указанный:
settype(<Переменная>, <Тип>);
Например:
$Number = 15;
$Str = "5";
settype($Number, "string");
settype($Str, "integer");
Можно также воспользоваться приведением типов. Для этого перед переменной в круглых скобках указывается тип, к которому надо преобразовать значение переменной.=
$Str = "5"; // Строка
$Number = 3; // Число
$Str2 = $Number + (integer)$Str; // Переменная содержит число 8
echo gettype($Str); // выведет string
Такой же результат можно получить при использовании следующих функций:
intval(<Переменная>);
doubleval(<Переменная>);
strval(<Переменная>);
Например:
$Str = "5"; // Строка
$Number = 3; // Число
$Str2 = $Number + intval($Str); // Переменная содержит число 8
echo gettype($Str); // выведет string
ОБРАТИТЕ ВНИМАНИЕ
В отличие от функции settype() приведение типов не меняет тип исходной переменной.
Отправитель | Нити |
---|
6 пользователь(ей) активно (4 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 6 далее... |