PHP-4 Эффективная работа


Арифметические операторы
Операторы присваивания
Битовые операторы
Операторы сравнения
Операторы обработки ошибочных ситуаций
Встроенный интерпретатор
Операторы инкремента и декремента
Логические операторы
Приоритеты вычислений
Строковые операторы

Термин «оператор» в РНР носит двойственный характер. С одной стороны, под оператором понимается некоторая законченная конструкция — элементарный кирпичик, из которого складывается программа. С другой стороны, оператор — это некоторое действие над выражениями, которое приводит к получению нового результата. В главе 3 мы рассмотрели первое определение оператора, а теперь спустимся ниже и рассмотрим вторую ипостась термина.

5.1. Арифметические операторы

Арифметические операторы в РНР, по большому счету, ничем не отличаются от аналогичных операторов в Си и Perl. Все они представлены в табл. 5.1.

Таблица 5.1. Арифметические операторы
ПримерНазваниеРезультат
$а +$bСложениеСумма $а и $b
$а -$bВычитаниеРазность $а и $b
$а *$bУмножениеПроизведение $а и $b
$а /$bДелениеЧастное отделения $а на $b
$а %$bДеление по модулюОстаток от целочисленного деления $а на $b

Оператор деления / возвращает целочисленное значение, если оба операнда являются целыми числами (или строками, которые конвертируются в целые числа). Если же хотя бы один из операндов является вещественным числом, то результатом вычисления будет вещественное число.

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

Как и следует ожидать от языка, являющегося наследником Си и Perl, в качестве оператора присваивания в РНР используется старый знакомый — «=». И точно так же, как в Си и Perl, этот символ не используется в качестве оператора сравнения — здесь вам не тут (то есть не Паскаль)!

Значением оператора присваивания является само присваиваемое значение. Или, говоря по-простому, значением $а = 3 будет 3. Эта особенность позволяет вам реализовать составные операторы, например:
$а = ($b = 4) + 5;
В результате переменная $а будет равна 9, а $b получит значение, равное 4. Кроме того, в состав РНР включены так называемые «комбинированные операторы» для всех арифметических и строковых операций, которые позволяют вам использовать значение внутри выражения, а затем присвоить некоторой переменной его результат. Это можно сделать, например, вот так:
$а = 3;
$а += 5;    // сделать $а равным 8, аналогично: $а = $а + 5;
$b = "Hello ";
$b .= "There!";                // $b равно "Hello There!", как
               // при использовании записи $b = $b . "There!";

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

прмечание
       РНР поддерживает присвоение по ссылке, используя для этого синтаксис $newvar = &$oldvar;. Присвоение по ссылке означает, что обе переменные указывают, фактически, на одну и ту же структуру данных в памяти машины. Подробнее этот вопрос рассматривался в разделе 4.3.

5.3. Битовые операторы

Битовые операторы позволяют вам изменять отдельные биты целых чисел (табл. 5.2).

Таблица 5.2. Битовые операторы
ПримерНазваниеРезультат
Sa & $bИВ результирующем числе установлены только те биты, которые установлены ив$а,ив$b
$а |$bИЛИВ результирующем числе установлены те биты, которые были установлены либо в $а, либо в $b
$а л$bИсключающее ИЛИУстанавливаются только те биты, значения которых в $а и $b не совпадают
- $аИнверсияПоразрядное инвертирование битов в $а
$а <<: $bСдвиг влевоПроизводится сдвиг $а на $b разрядов влево (каждый шаг означает «умножение на 2»)
$а >>: $b Сдвиг вправоПроизводится сдвиг $а на $b разрядов вправо (каждый шаг означает «разделить на 2»)

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

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

Таблица 5.3. Операторы сравнения
ПримерНазваниеРезультат PHP4
$а== $bРавно True, если $а равно $b
$а=== $bTrue, если $а равно $b и обе переменных *принадлежат одному типу
$а!= $bHe равноTrue, если $а не равно $b
$а!== $bHe идентичноTrue, если $а не равно $b или если их типы не совпадают
Sa< $bМеньше чемTrue, если $а меньше, чем $b
$а > $b>Больше чемTrue, если $а больше, чем $b
$а<= $bМеньше или равноTrue, если $а меньше или равно $b
$а>= $bБольше или равноTrue, если $а больше или равно $b

Существует еще один оператор сравнения — тернарный оператор «? :», заимствованный из Си и Perl, который выглядит следующим образом: (exprl) ? (ехрr2) : (ехрrЗ);

Результатом этого выражения будет значение ехpr2, если значением exprl явля- ется true, или ехргЗ, если значение exprl равно false.

5.5. Операторы обработки ошибочных ситуаций

РНР поддерживает один-единственный оператор, предназначенный для управления процессом обработки ошибочных ситуаций. Это оператор @. Если этот оператор приписан в начале PHP-выражения, то любое сообщение об ошибке, которое может возникнуть во время выполнения этого выражения, будет проигнорировано.

Если при компиляции PHP-машины был активизирован механизм регистрации track_errors, то любое сообщение об ошибке, генерируемое таким выражением, будет сохранено в глобальной переменной $php_er rormsg. Следует, однако, иметь в виду, что при каждой очередной ошибке это значение будет переписываться, поэтому вы должны проверять эту переменную после каждого «потенциально опасного» выражения.

<?php
/' Неверный оператор SQL */
$res = @pgsql_query ("select code, city from \"phoneli st") or
        die ("Ошибка при выполнении запроса - '$php_errormsg'");

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

5.6. Встроенный интерпретатор

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

<FONT SIZE=+1>
<h2>Текущий каталог</h2>

<?php
$output = 'Is -al" ;
echo "<pre>$output</pre>";

Результат работы этой программы приведен на рис. 5.1. Обратите внимание, что выводится текущий каталог, в котором расположена выполняемая в данный момент программа.

Рис. 5.1. Вывод текущего каталога с помощью интерпретатора оболочки UNIX

совет
       При активизации безопасного режима PHP-машины встроенный интерпретатор становится недоступным.
назад
далее

Сайт управляется системой uCoz