Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции.rtf
Скачиваний:
115
Добавлен:
15.06.2014
Размер:
24.67 Mб
Скачать

5.1.11 Константы

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

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

define:

define("TIREPRICE", 100);

define("OILPRICE", 10) ;

define("SPARKPRICE", 4) ;

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

echo TIREPRICE;

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

Термин область действия (scope) относится к разделам сценария, внутри которых видна (доступна) конкретная переменная. В РНР используются следующие три основных типа областей действия:

• Глобальные переменные, объявленные в сценарии, видны во всем сценарии, но не внутри функций.

• Переменные, использованные внутри функции, являются локальными для данной функции.

• Переменные, использованные внутри функции, которая объявлена как глобальная, относятся к глобальным переменным с такими же именами.

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

5.1.12 Знаки операций

Математические операторы

Математические операторы (табл. 5.1) предназначены для выполнения различных математических операций и часто применяются в большинстве программ РНР. К счастью, их использование обходится без проблем.

Таблица 5.1. Математические операторы

Пример

Название

Результат

$а + $b

Сложение

Сумма $а и $b

$а-$b

Вычитание

Разность $а и $b

$а*$b

Умножение

Произведение $а и $b

$а/$b

Деление

Частное от деления $а на $b

$а % $b

Остаток

Остаток от деления $а на $b

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

Операторы присваивания

Операторы присваивания задают новое значение переменной. В простейшем варианте оператор присваивания ограничивается изменением величины, в других вариантах (называемых сокращенными операторами присваивания) перед присваиванием выполняется некоторая операция. Примеры таких операторов приведены в табл. 5.2.

Таблица 5.2. Операторы присваивания

Пример

Название

Результат

$а = 5; 

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

Переменная $а равна 5 

$а += 5; 

 Сложение с присваиванием

 Переменная $а равна сумме $а и 5

$а *= 5; 

Умножение с присваиванием

Переменная $а равна произведению $а и 5

$а/=5;

Деление с присваиванием

Переменная $а равна частному отделения $а на 5

$а .= 5; 

 Конкатенация с присваиванием

Переменная $а равна конкатенации $а и 5

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

Строковые операторы

Строковые операторы РНР (табл. 5.3) обеспечивают удобные средства конкатенации (то есть слияния) строк. Существует два строковых оператора: оператор конкатенации (.) и оператор конкатенации с присваиванием (.=), описанный в предыдущем разделе «Операторы присваивания».

Конкатенацией называется объединение двух и более объектов в единое целое.

Таблица 5.3. Строковые операторы

Пример

Название

Результат

$a = "abc"."def"

Конкатенация

Переменной $а присваивается результат конкатенации $а и $b

 $а - "ghijkl"

 Конкатенация с присваиванием

Переменной $а присваивается результат конкатенации ее текущего значения со строкой "ghijkl"

Пример использования строковых операторов:

// $а присваивается строковое значение "Spaghetti & Meatballs"

$а = "Spaghetti" . "& Meatballs"

// $а присваивается строковое значение "Spaghetti & Meatballs are delicious"

$a .= "are delicious";

Конечно, два строковых оператора не исчерпывают всех возможностей РНР по обработке строк.

Операторы инкремента и декремента

Удобные вспомогательные операторы инкремента (++) и декремента (--), приведенные в табл. 5.4, делают программу более наглядной и обеспечивают укороченную запись для увеличения или уменьшения текущего значения переменной на 1.

Таблица 5.4. Операторы инкремента и декремента

Пример

Название

Результат

++$а, $а++

Инкремент

Переменная $а увеличивается на 1

--$а, $а--

Декремент

Переменная $а уменьшается на 1

Интересный факт: эти операторы могут располагаться как слева, так и справа от операнда. Действия, выполняемые оператором, зависят от того, с какой стороны от операнда он находится. Рассмотрим следующий пример:

$inventory = 15;  // Присвоить Sinventory целое число 15

$old_inv = Sinventory--;  // СНАЧАЛА присвоить $old_inv значение

// Sinventory. а ЗАТЕМ уменьшить Sinventory.

$orig_iinventory = ++inventory; // СНАЧАЛА увеличить Sinventory. а ЗАТЕМ

// присвоить увеличенное значение Sinventory

// переменной $orig_inventory.

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

Логические операторы

Логические операторы (табл. 5.5) наряду с математическими операторами играют важную роль в любом приложении РНР, обеспечивая средства для принятия решений в зависимости от значения переменных. Логические операторы позволяют управлять порядком выполнения команд в программе и часто используются в управляющих конструкциях (таких, как условная команда i f, а также циклы for и while).

Таблица 5.5. Логические операторы

Пример

Название

Результат

$а && $b

Конъюнкция

Истина, если истинны оба операнда ,

$aAND$b

Конъюнкция

Истина, если истинны оба операнда

$а И $b

Дизъюнкция

Истина, если истинен хотя бы один из операндов

$а OR $b

Дизъюнкция

Истина, если истинен хотя бы один из операндов

!$а

Отрицание

Истина, если значение $а ложно

NOT !$a

Отрицание

Истина, если значение $а ложно

$а XOR $b

Исключающая дизъюнкция

Истина, если истинен только один из операндов

Логические операторы часто используются для проверки результата вызова функций:

file_exists("filename.txt") OR print "File does not exist!";

Возможен один из двух вариантов: файл filename.txt существует; будет выведено сообщение: «File does not exist!».

Операторы равенства

Операторы равенства (табл. 5.6) предназначены для сравнения двух величин и проверки их эквивалентности.

Таблица 5.6 Операторы равенства

Пример

Название

Результат

$a==$b

Проверка равенства

Истина, если $а и $b равны

$а != $b

Проверка неравенства

Истина, если $а и $b не равны

$а === $b

Проверка идентичности

Истина, если $а и $b равны и имеют одинаковый тип

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

Операторы сравнения

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

Таблица 5.7 Операторы сравнения

Пример

Название

Результат

$a<$b

Меньше

Истина, если переменная $а меньше $b

$a>$b

Больше

Истина, если переменная $а больше $b

$a <= $b

Меньше или равно

Истина, если переменная $а меньше или равна $b

$a >= $b

Больше или равно

Истина, если переменная $а больше или равна $b

($a-12)?5: -1

Тернарный оператор

Если переменная $а равна 12, возвращается значение 5, а если не равна — возвращается 1

Операторы REQUIRE и INCLUDE.

Оператор REQUIRE заменяет себя содержимым указанного файла, похоже на то,как в препроцессоре C работает #include.

Это означает, что нельзя поместить require() внутрь цикла и ожидать, что он включит содержимое дугого файла несколько раз в процессе каждой итерации. Для это используйте INCLUDE.

require ('header.inc');

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

$files = array ('first.inc', 'second.inc', 'third.inc');

for ($i = 0; $i < count($files); $i++) {

include($files[$i]);

}

Отметим, что когда файл исполняется, парсер пребывает в "режиме HTML", то есть будет выводить содержимое файла, пока не встретит первый стартовый тег PHP (<?).

Соседние файлы в предмете Программирование для Web