Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Проверка специфических типов данныхСодержание книги Поиск на нашем сайте
Функция gettype () полезна при отладке сценария, потому что она позволяет точно узнать тип любой переменной. Однако часто бывает нужно только проверить, содержит ли переменная значение некоторого типа. В РНР для этого предусмотрен набор специальных функций, соответствующих каждому типу данных. Этим функциям передаются имена переменных или значения, а возвращают они значение логического (boolean) типа (true или f alse). Эти функции перечислены в таблице 6.3.
Таблица 6.3
Все перечисленные выше функции часто используются вместе с оператором if для проверки типов переменных, передаваемых функциям или методам объекта. Изменение типа с помощью функции settype() Для изменения типа переменной в РНР предусмотрена функция settype (). При вызове функции settype() следует поместить в скобки имя переменной, тип которой нужно изменить, а также описание ее нового типа и разделить их запятыми. В листинге 4.2 показан пример преобразования значения 3.14 типа double в четыре других типа, рассматриваемых на этой лекции. Листинг 6.2. Изменение типа переменной с помощью функции settype() 1: <!DO TYPE HTML PUBLIC 2: "- //W3C//DTD XHTML 1.0 Strict//EN" 3: "http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd"> 4: <html> 5: <head> 6: <title>Листинг 4.2. Изменение, типа переменной с помощью функции settype()</title> 7: </head> 8: 9: <body> 10: <div> 11: <?php 12: $undecided = 3.14; 13: 14: print gettype($undecided); // double 15: print " -- $undecided<br />"; // 3.14 16: 17: settype($undecided, string); 18: print gettype($undecided); // string 19: print " -- $undecided<br />"; // 3.14 20: 21: settype($undecided, int) 22: print gettype($undecided); // integer 23: print " -- $undecided<br />"; // 3 24: 25: settype($undecided, double); 26: print gettype($undecided); // double 27: print " -- $undecided<br />"; // 3.0 28: 29: settype($undecided, bool); 30: print gettype($undecided); // Boolean 31: print " -- $undecided<br />"; // 1 32:?> 33: </div> 34: </body> 35: </html>
Для того чтобы убедиться, что изменение типа произошло, вызывается функция gettype (), а затем выводится значение переменной $undecided в браузер. Когда мы в строке 21 конвертируем значение 3.14 в целое число, его дробная часть (число после десятичной точки) отбрасывается. По этой причине значение переменной $undecided будет равно 3 после повторного ее преобразования в тип double в строке 25. И, наконец, в строке 29 мы преобразуем переменную $undecided в логический тип. При преобразовании в логический тип любое число, отличающееся от 0, автоматически становится равным true. При печати логического типа в РНР значение true соответствует 1,a false - пустой строке. Поэтому в строке 31 выводится значение переменной $undecided, равное 1. Изменение типа с помощью операции приведения Для того чтобы создать копию значения некоторой переменной и преобразовать ее в указанный тип данных, нужно после знака равно и перед именем исходной переменной поместить в круглых скобках желаемый спецификатор типа. Принципиальное отличие между функцией settype() и явным приведением типа (cast) состоит в том, что вторая операция создает копию исходной переменной заданного типа, не изменяя при этом типа исходной переменной. Это продемонстрировано в листинге 4.3. Листинг 6.3. Явное приведение типов переменных 1: <!DO TYPE HTML PUBLIC 2: "- //W3C//DTD XHTML 1.0 Strict//EN" 3: "http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd"> 4: 5: <html> 6: <head> 7: <title>Листинг 4.3. Явное приведение типов переменных<.title> 8: </head> 9: 10: <body> 11: <div> 12: <?php 13: $undecided = 3.14; 14: 15: $holder = (double) $undecided; 16: print gettype($holder); // double 17: print " -- $holder<br />"; // 3.14 18: 19: $holder = (string) $undecided; 20: print gettype($holder); // string 21: print " -- $holder<br />"; // "3.14" 22: 23: $holder = (integer) $undecided; 24: print gettype($holder); // integer 25: print " -- $holder<br />"; // 3 26: 27: $holder = (boolean) $undecided; 28: print gettype($holder); // boolean 29: print " -- $holder<br />"; // 1 30: 31: print gettype($undecided); // double 32: print " -- $undecided<br />"; // 3.14 33:?> 34: </div> 35: </body> 36: </html>
В этом примере тип переменной $undecided не изменяется и повсюду в сценарии остается double. Мы проиллюстрировали это в строке 31, используя для вывода типа переменной $undecided функцию gettype (). Фактически в результате операции приведения типа создается копия значения переменной $undecided указанного типа, которое затем присваивается новой переменной $holder в строках 15, 19, 23 и 27. Поскольку мы работаем с копией переменной $undecided, ее тип и значение никогда не изменяются, в отличие от строк 17, 21, 25 и 29 листинга 6.2. Теперь, когда мы уже умеем изменять тип содержимого переменной, используя либо функцию settype(), либо операцию явного приведения типов, следует выяснить, для чего это может понадобиться. Конечно, явное приведение типов используется в реальных сценариях не часто, поскольку интерпретатор РНР автоматики выполняет нужное приведение, когда того требует контекст. Однако операция автоматического приведения типа является временной, тогда как в сценарии может понадобится, чтобы переменная хранила конкретный тип данных постоянно. Числа, вводимые пользователем в поля формы HTML, передаются в сценарий в виде строк. Если попытаться сложить две строки, содержащие числа, РНР услужливо сначала преобразует эти строки в числа, а затем складывает их. Таким образом: "30см" + "40см" Даст в результате целое число 70. При приведении этих строк к целым числам интерпретатор РНР игнорирует нечисловые символы. Однако вам может потребоваться самостоятельно проанализировать введенные пользователем данные. Предположим, что пользователь получил приглашение ввести число. Эту ситуацию; можно смоделировать, объявляя переменную и присваивая ей некоторое значение, например: $test = "30см"; Данная ситуация напоминает случай, когда пользователь ошибочно указал единицу измерения после числа. Однако, как можно непосредственно убедиться, введенная пользователем информация корректно приводится к числовому виду: $test = (integer) $test; print "Вы ввели $test см";
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-17; просмотров: 145; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.242.223 (0.006 с.) |