- Трюки с типами
- Приведение типов
- PHP :: Манипуляции с типами
- Приведение типов в PHP
- Приведение к типу bool
- Приведение к типу integer
- Приведение к типу float
- Приведение к типу string
- Приведение к типу array
- Приведение к типу NULL
- Примеры приведения типов
- Явное преобразование типов php
- Учебник по PHP 4
- Основы PHP
- Типы данных в РНР. Преобразование типов
- Работа с данными в PHP
- Основы работы с данными в PHP
- Функции gettype() в PHP с примерами
- Функции settype() в PHP с примерами
- Временное преобразование типа переменной
- Преобразование массивов в строки и наоборот
- Автоматическое преобразование типов данных в PHP
- Проверка типов
- Ещё функции изменения типа данных
Трюки с типами
PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присваиваете строковое значение переменной var, var становится строкой. Если вы затем присваиваете переменной var целочисленное значение, она становится целым числом.
Примером автоматической конвертации в PHP является операция сложения ‘+’. Если любой из операндов float, то все операнды вычисляются как float, и результат также будет float. Если же операнды интерпретируются как целые числа, то и результат будет целочисленным.
Обратите внимание, что при этом НЕ изменяются типы самих операндов; это делается только на этапе вычисления операндов.
Если последние два примера непонятны, см. Конвертация строк.
Если вы хотите форсировать вычисление переменной как имеющей определённый тип, см. раздел Приведение типов. Если вы хотите изменить тип переменной, см. settype().
Если вы хотите протестировать любой из примеров этого раздела, вы можете использовать функцию var_dump().
Примечание: Поведение автоматической конвертации для массива в настоящее время не определено.
Исходя из этого, как указано в PHP 3.0.12 и PHP 4.0b3-RC4, результат этой автоматической конвертации рассматривается как неопределённый/undefined. Пути разрешения, однако, обсуждаются.
Приведение типов
Приведение типов в PHP работает так же, как и в C: имя нужного типа записывается в скобках перед переменной, которая к этому новому типу приводится.
Допускаются следующие приведения типов:
Примечание: Вместо приведения переменной к строке, вы можете также заключить переменную в двойные кавычки.
Заметьте, что табуляции и пробелы допускаются внутри скобок, поэтому следующие варианты функционально эквивалентны:
Возможно, сейчас не очевидно, что происходит при приведении конкретных типов.
При приведении или форсировании конвертации из массива в строку, результатом станет слово Array. При приведении или форсировании конвертации из объекта в строку, результатом станет слово Object.
При приведении скалярной или строковой переменной к массиву, переменная станет первым элементом этого массива:
При приведении скалярной или строковой переменной к объекту, переменная станет атрибутом этого объекта; имя атрибута будет ‘scalar’:
PHP :: Манипуляции с типами
Приведение типов в PHP
Поскольку PHP относится к языкам программирования с нестрогой типизацией данных, довольно часто получается так, что интерпретатор ожидает получить данные одного типа, а вместо этого получает данные другого типа. В таких случаях он просто осуществляет преобразование полученных данных к нужному типу.
называется процесс преобразования значения одного типа в значение другого типа.
В ходе приведения типов, во избежание непредвиденных результатов, следует знать правила, по которым происходит преобразование данных одного типа в другой. Перечислим их, после чего рассмотрим пример кода, содержащего данные преобразования типов.
Приведение к типу bool
Во время преобразования к типу bool следующие значения рассматриваются как FALSE :
Приведение к типу integer
В случае привидения к типу integer :
Для других типов данных приведение к целочисленному типу не определено, поэтому не стоит доверять текущему наблюдаемому поведению, так как оно может измениться без предупреждения.
Приведение к типу float
В случае привидения к типу float для всех типов, за исключением строк, сперва будет совершено преобразование в целочисленный тип, а уже потом целое число будет преобразовано в вещественное. Что касается строк, то:
Приведение к типу string
В случае преобразования значений в строки (т.е. приведение к типу string ):
Приведение к типу array
Приведение к типу NULL
Примеры приведения типов
Явное преобразование типов php
Casting objects to arrays is a pain. Example:
$test = new MyClass ();
echo ‘
/*
Array
(
[MyClasspriv] => priv_value
[*prot] => prot_value
[pub] => pub_value
[MyClasspriv] => second_pub_value
)
*/
?>
Yes, that looks like an array with two keys with the same name and it looks like the protected field was prepended with an asterisk. But that’s not true:
/*
MyClasspriv (13) => priv_value
0 77 121 67 108 97 115 115 0 112 114 105 118
*prot (7) => prot_value
0 42 0 112 114 111 116
pub (3) => pub_value
112 117 98
MyClasspriv (11) => second_pub_value
77 121 67 108 97 115 115 112 114 105 118
*/
?>
The char codes show that the protected keys are prepended with ‘\0*\0’ and private keys are prepended with ‘\0’.__CLASS__.’\0′ so be careful when playing around with this.
The object casting methods presented here do not take into account the class hierarchy of the class you’re trying to cast your object into.
Value of uninitialized variable of different data types.
settype($a,’bool’);
var_dump($a); //boolean false
settype($b,’string’);
var_dump($b); //string » (length=0)
settype($c,’array’);
var_dump($c); //array (size=0) empty
settype($d,’int’);
var_dump($d); //int 0
settype($e,’float’);
var_dump($e); //float 0
You REALLY must be aware what you are doing, when you cast a lot in your code. For example, you can accidentaly change FALSE to TRUE (probably not in one line, like here):
if(TRUE === (boolean) (array) (int) FALSE) <
kaboom();
>
namaroulis stated «I found it tricky to check if a posted value was an integer»; to test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric():
in response to bhsmither at gmail.com
It raises a warning because of the bad enquoted variable
It seems (unset) is pretty useless. But for people who like to make their code really compact (and probably unreadable). You can use it to use an variable and unset it on the same line:
?>
With the unset cast:
?>
Hoorah, we lost another line!
Checking for strings to be integers?
How about if a string is a float?
/* When checking for floats, we assume the possibility of no decimals needed. If you MUST require decimals (forcing the user to type 7.0 for example) replace the sequence:
9+(\.3+)?
with
2+\.7+
*/
Учебник по PHP 4
Типы данных в РНР. Преобразование типовКак уже было сказано, PHP предоставляет определенную гибкость в отношении типов переменных, т.е. с одной и той же переменной на протяжении программы можно работать и как со строкой, и как с числом. Однако, несмотря на это в РНР существуют набор основных типов данных, которые могут явно указываться при работе с переменными: Есть функция gettype(), возвращающая тип, который РНР назначил переменной: В первом случае РНР вернет string, во втором integer. Существует также функция settype(), которая явно устанавливает тип: Выполнение этого фрагмента кода приведет к такому же результату, как и предыдущего. Кроме функции settype() преобразование типов в РНР можно осуществлять при помощи операторов преобразования типов. Преобразование типов осуществляется путем указания перед переменной ее нового типа, взятого в скобки: Соответственно, выполнение следующего кода приведет к тому, что РНР вернет integer:
Если Вам нужна частная профессиональная консультация от авторов многих книг Кузнецова М.В. и Симдянова И.В., добро пожаловать в наш Консультационный Центр SoftTime. Работа с данными в PHPОсновы работы с данными в PHPПеременныей в PHP могут быть: В PHP не нужно для переменных устанавливать тип, достаточно просто присвоить значение переменной. Функции gettype() в PHP с примерамиПопробуйте подставить в функцию gettype() разные переменные, чтобы этот материал отложился у вас в памяти. Тип данных object мы пока трогать не будем. Функции settype() в PHP с примерамиФункции settype() возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Временное преобразование типа переменнойМожно временно преобразовать тип переменной. Для этого в выражении нужно указать требуемый тип в скобках. Вот пример: Преобразование массивов в строки и наоборотРассмотрим что происходит если строку преобразовать в массив: Тут всё просто, создан массив с единственным элементом, состоящим из строки. Попробуйте сделать тоже самое с типом данных integer самостоятельно. Автоматическое преобразование типов данных в PHPА теперь самостоятельно попробуйте заменить строку «12» на «3.34». Далее, попробуем применить оператор конкатенации строк к этим же переменным. Преобразование типов переменных в PHP происходит в зависимости от контекста. Когда использовали арифметический оператор, предназначенный для работы с числами, строковую переменную PHP автоматически преобразовал в число. При использовании оператора конкатенации строк число было автоматически преобразовано в строку. Ещё пример преобразования типов данных в PHP: Правило: если строка начинается с числа, то при преобразовании она преобразуется в число. Это относится к целым и вещественным числам. Если в начале строки нет числа, то она преобразуется в число ноль. При использовании инкремента и декремента строка преобразовывается по определённым правилам. Вот простой пример: Тут строки можно преобразовать в числа без труда. А теперь другой пример. В этом примере последняя буква поменялась с «о» на «p», то есть единица была добавлена к коду символа. Давайте применим к строке другой метод инкрементации: В этом примере арифметический оператор » += » сначала преобразовал строку «hello» в число ноль, затем прибавил к нему единицу. Обратите внимание: при при обработке выражения с выполнением автоматического преобразования ни один операнд не меняется. В операции используется преобразованная копия переменной. Проверка типовПро функцию gettype() вы уже знаете, она возвращает строку с типом данных. Иногда нужно проверить переменную на соответствие одному типу. Для этого есть следующие функции: Все эти функции возвращают true или false в зависимости от результатов проверки. Вторая проверка выглядит более компактно. Ещё функции изменения типа данныхКроме функции settype() в PHP есть ещё функции для преобразования типа. Adblockdetector |