Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
953.86 Кб
Скачать

Лекция 2.11 Основы языка ис. Синтаксис.

1. Переменные и типы данных.

2. Массивы.

3. Объекты.

4. Логические величины.

5. Идентификаторы.

6. Переменные.

7. Типы.

8. Присваивание.

9. Константы.

ПЕРЕМЕННЫЕ И ТИПЫ ДАННЫХ

Переменные и типы данных

В РНР поддерживаются шесть основных типов данных:

  • целые числа;

  • вещественные числа;

  • строки;

  • массивы;

  • объекты;

  • логические величины.

Целые числа

Целое число не имеет дробной части и представляется последовательностью из одной или нескольких цифр.

Восьмеричная и шестнадцатеричная запись

В РНР поддерживается запись целых чисел в восьмеричной (по основанию 8) и шестнадцатеричной (по основанию 16) системах счисления.

Вещественные числа

Вещественные числа (числа с плавающей точкой) отличаются от целых наличием дробной части. Они используются для представления значений, требующих повышенной точности, — например, температур или денежных величин. В РНР поддерживаются два вещественных формата: стандартная и научная (экспоненциальная) запись.

Строковые значения

Строкой (string) называется последовательность символов, которая рассматривается как единое целое, но при этом обеспечивает доступ к отдельным символам.

Обратите внимание: в РНР не поддерживается символьный тип данных. Строковый тип может рассматриваться как единое представление для последовательностей, состоящих из одного или нескольких символов.

Строковое присваивание

Строки делятся на две категории в зависимости от типа ограничителя — они могут ограничиваться парой кавычек (" ") или апострофов (' '). Между этими категориями существуют два принципиальных различия.

Таблица.1. Служебные символы в строках

Последовательность

Смысл

\n

Новая строка

 \r

Возврат курсора

 \t

Горизонтальная табуляция

\\

Обратная косая черта

  \$

Знак доллара

\"

Кавычка

\[0-7]{1,3}

Восьмеричная запись числа (в виде регулярного выражения)

 \x[0-9A-Fa-f]{l,2}

Шестнадцатиричная запись числа (в виде регулярного выражения)

МАССИВЫ.

Массив представляет собой список однотипных элементов. Существует два типа массивов, различающиеся по способу идентификации элементов. В массивах первого типа элемент определяется индексом в последовательности. Массивы второго типа имеют ассоциативную природу, и для обращения к элементам используются ключи, логически связанные со значениями. Впрочем, на практике операции с массивами обоих типов выполняются сходным образом. По размерности массивы делятся на одномерные и многомерные.

Одномерные индексируемые массивы

$имя[индекс1];

При создании массивов также можно воспользоваться функцией array (). Массив $meat из предыдущего примера создается командой

$meat = аrrау("chicken", "steak", "turkey");

Одномерные ассоциативные массивы

Ассоциативные массивы особенно удобны в ситуациях, когда элементы массива удобнее связывать со словами, а не с числами.

Spairings["zinfandel"] = "Broiled Veal Chops";

$pairings["merlot"] = "Baked Ham";

$pairings["sauvignon"] = "Prime Rib";

$pairings["sauternes"] = "Roasted Salmon";

Ассоциативный массив заметно экономит время и объем программного кода, необходимого для вывода определенных элементов массива.

Многомерные индексируемые массивы

Многомерные индексируемые массивы работают практически так же, как и их одномерные прототипы, однако элементы в них определяются несколькими индексами вместо одного. Теоретически размерность индексируемого массива не ограничивается, хотя в большинстве приложений практически не встречаются массивы с размерностью выше 3.

Обобщенный синтаксис элементов многомерного массива:

$имя[индекс1][индекс2]..[индексN];

Смешанное индексирование

В многомерных массивах допускается смешанное индексирование (числовое и ассоциативное). Решение может выглядеть следующим образом:

$Buckeyes["quarterback"] [1] = "Bellisari";

$Buckeyes["quarterback"] [2] = "Moherman":

$Buckeyes["quarterback"] [3] = "Wiley";

В РНР существует множество функций для создания массивов и операций с ними — эта тема настолько обширна, что заслуживает отдельной главы. Работа с массивами в РНР подробно описана в главе 13.

ОБЪЕКТЫ

Объект представляет собой переменную, экземпляр которой создается по специальному шаблону, называемому классом. Концепции объектов и классов являются неотъемлемой частью парадигмы объектно-ориентированного программирования (ООП).

В отличие от других типов данных, поддерживаемых в языке РНР, объекты должны объявляться явно. Необходимо понимать, что объект — всего лишь конкретный экземпляр класса, используемого в качестве шаблона для создания объектов с конкретными характеристиками и функциональными возможностями

Определение класса задает атрибуты и функции, связанные с некоторой структурой данных — в данном примере это структура с именем appliance (устройство). У этой структуры имеется всего один атрибут power (мощность). Для изменения этого атрибута создается метод set_power.

ЛОГИЧЕСКИЕ ВЕЛИЧИНЫ

Логический тип данных принимает всего два значения: истинное (true) и ложное (false). Логические величины создаются двумя способами: при проверке условий и в виде значений переменных.

Сравнения существуют в нескольких формах. Чаще всего они встречаются при использовании оператора = в условной команде if.

Логические величины также могут определяться явным присваиванием переменной истинного или ложного значения.

Возможен и другой вариант — представление истинных и ложных логических величин в виде значений 1 и 0 соответственно.

ИДЕНТИФИКАТОРЫ

Общий термин идентификатор применяется к переменным, функциям и другим объектам, определяемым пользователем. Идентификаторы РНР должны удовлетворять нескольким условиям:

Идентификатор состоит из одного или нескольких символов и начинается с буквы или символа подчеркивания.

Допустимые идентификаторы

Недопустимые идентификаторы

my_function

This&that

Size

!counter

_someword

4ward

В идентификаторах учитывается регистр символов. Длина идентификаторов не ограничивается. Это удобно, поскольку программист может точно описать смысл идентификатора в его имени. Идентификатор не может совпадать с каким-либо из стандартных ключевых слов РНР.

ПЕРЕМЕННЫЕ

Объявление переменных

Переменная представляет собой именованную область памяти, содержащую данные, с которыми можно выполнять операции во время выполнения программы.

Имена переменных всегда начинаются со знака доллара, $.

Переменные могут объявляться в любой точке сценария РНР, однако от расположения объявления зависит то, откуда можно обращаться к данной переменной.

Область видимости переменных

Область видимости (scope) определяется как область доступности переменной в той программе, в которой она была объявлена. В зависимости от области видимости переменные РНР делятся на четыре типа:

  •   локальные переменные;

  • параметры функций;

  • глобальные переменные;

  • статические переменные.

Локальные переменные

Переменная, объявленная внутри функции, считается локальной ; другими словами, на нее можно ссылаться только в этой функции. При любом присваивании вне функции будет использоваться совершенно другая переменная, которая не имеет ничего общего (кроме имени) с переменной, объявленной внутри функции. При выходе из функции, в которой была объявлена локальная переменная, эта переменная и ее значение уничтожаются.

Основное достоинство локальных переменных — отсутствие непредвиденных побочных эффектов, связанных со случайной или намеренной модификацией глобальной переменной.

Глобальные переменные

Глобальные переменные, в отличие от локальных, доступны в любой точке программы. Но чтобы изменить значение глобальной переменной, необходимо специально объявить ее как глобальную в соответствующей функции. Для этого перед именем переменной ставится ключевое слово GLOBAL.

Альтернативный способ объявления глобальных переменных связан с использованием массива РНР $GLOBALS( ).

Каким бы способом ни обеспечивалась глобальная видимость переменной, помните, что неосторожное использование глобальных переменных нередко приводит к неожиданным результатам, причиняющим немало хлопот программистам. Таким образом, хотя глобальные переменные очень удобны, при их использовании необходима умеренность.

Статические переменные

Последний тип видимости переменных называется статическим. В отличие от переменных, объявленных параметрами и уничтожаемых при выходе из функции, статическая переменная сохраняет свое значение при повторном вызове. Для объявления статической переменной перед ее именем ставится ключевое слово STATIC.

Статические переменные особенно удобны при написании рекурсивных функций — особого класса функций, которые многократно вызывают сами себя до выполнения некоторого условия.

ТИПЫ

Переключение типов

Иногда бывает удобно использовать переменные способами, не предусмотренными при их создании. Допустим, вам захочется прибавить строковое значение "15" к целому числу 12. К счастью, тип переменных РНР может изменяться и без использования механизма явного преобразования. Этот процесс, независимо от того, выполняется ли он прямо или косвенно, называется переключением (juggling) типов.

Предположим, вы суммируете две величины — строку и целое число. При суммировании целого числа со строковым представлением числа будет получено целое число.

Другой пример переключения типов — суммирование целого числа с вещественным. При этом целое число преобразуется к вещественному типу, чтобы избежать потери точности.

Преобразование типов

Явное приведение переменной к типу, отличному от того, который изначально предназначался для нее, называется преобразованием (casting) типа. Изменение типа может быть как временным, одноразовым, так и постоянным.

Чтобы временно привести переменную к другому типу, достаточно воспользоваться оператором преобразования типа — указать нужный тип перед именем переменной в круглых скобках (табл. 2).

Таблица 2. Операторы преобразования типа переменных

Оператор преобразования типа

Новый тип

 (int) или (integer)

Целое число

(real), (double) или (float)

Вещественное число

(string)

Строка

(array)

Массив

(object)

Объект

Простой пример преобразования типов:

$variable1= 13; // $variable1 присваивается целое число 13

$variable2 = (double) $variable1; // $variable2 присваивается 13.0

ПРИСВАИВАНИЕ

Присваивание по значению

Это самый распространенный способ присваивания, при котором значение просто заносится в область памяти, представленную именем переменной. Примеры присваивания по значению:

$vehicle = "car";

$amount =10.23;

Присваивание по ссылке

Другой способ заключается в присваивании переменной ссылки на область памяти, занимаемую другой переменной. Вместо конкретного значения переменная-приемник связывается с указателем (или ссылкой) на область памяти, поэтому фактическое копирование не выполняется.

Чтобы присвоить значение по ссылке, укажите перед именем переменной-источника символ & (амперсанд):

$dessert = "cake";

$dessert2 = $&dessert;

$dessert2 = "cookies";

print "$dessert2 <br>"; // Выводится строка cookies

print &dessert; // Снова выводится строка cookies

Как видно из приведенного фрагмента, после связывания переменной $dessert2 со ссылкой на область памяти, занимаемую переменной $dessert, любые изменения $dessert2 приводят к автоматической модификации $dessert (и всех остальных переменных, ссылающихся на эту же область памяти).

КОНСТАНТЫ

Константой называется именованная величина, которая не изменяется в процессе выполнения программы. Константы особенно удобны при работе с заведомо постоянными величинами — например, числом π (3,141592) или количеством футов в миле (5280).

В РНР константы определяются функцией define( ). После того как константа будет определена, вы не сможете изменить (или переопределить) ее в этой программе.

Например, определение числа я в сценарии РНР может выглядеть так:

define("'PI", "3.141592");

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]