Новые книги

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

Задумайтесь о следующем: что, если бы вы могли осуществить выведение своего продукта на рынок подобно Apple или крупной голливудской студии? Что. если бы ваши потенциальные покупатели считали бы дни до того момента, когда они смогут купить ваш продукт? Что, если бы вы смогли обеспечить себе такое прочное позиционирование на вашем рынке, которое почти бы полностью устранило для вас конкуренцию? И вы могли бы делать все это, независимо от того, каким бы скромным ни был ваш бизнес или ваш бюджет?

Теперь вопрос заключается в следующем – вы в самом деле собираетесь начать работать медленно и вскоре угаснуть? Или же вы готовы осуществить старт; который изменит будущее вашего бизнеса и вашу жизнь?

Права на издание получены по соглашению с Morgan James Publishing. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Даже в самые тяжелые времена ваш бизнес необходимо рекламировать. Вы считаете, что это дорого? У вас нет денег на рекламу? Оказывается, рекламировать вашу компанию, товар, услугу можно и нужно даже тогда, когда бюджет на рекламу отсутствует. К счастью, бесплатные способы рекламы действительно существуют.

О них и пойдет речь в этой книге — ПЕРВОЙ книге, где подробно рассматриваются рекламные приемы, доступные любому бизнесу.

Выражения

Учебник РНР
Назад Вперёд

Глава 9. Выражения

Выражения это краеугольный камень PHP. В PHP вы почти всё записываете в виде выражений. Точнее и проще всего определить выражение как "нечто, имеющее значение".

Базовыми формами выражений являются константы и переменные. Если вы записываете "$a = 5", вы присваиваете '5' переменной $a. '5', очевидно, имеет значение 5 или, другими словами, '5' это выражение со значением 5 (в данном случае '5' это целочисленная/integer константа).

После этого присвоения вы предполагаете, что $a имеет значение 5, поэтому, если вы записываете $b = $a, вы ожидаете, что результат будет таким же, что и при записи $b = 5. Иначе говоря, $a это выражение со значением 5. Если всё работает правильно, результат будет именно таким.

Более сложным примером выражения являются функции. Например, рассмотрим функцию:

function foo ()
{
    return 5;
}

Будем считать, что вы уже знакомы с понятием "функция" (если нет, просмотрите главу о функциях), и предполагаете, что запись $c = foo() даёт тот же результат, что и запись $c = 5, - и будете правы. Функция является выражением, имеющим значение своего return-значения. Поскольку foo() возвращает/return 5, значением выражения 'foo()' является 5. Обычно функции не просто возвращают статичное значение, а что-то вычисляют.

Разумеется, значения в PHP не обязательно должны быть только целочисленными. PHP поддерживает три типа скалярных значений: integer/целочисленные, с плавающей точкой/floating point и строковые/string значения (скалярными являются значения, которые нельзя 'разбить' на небольшие части, как, например, это можно делать с массивами). PHP также поддерживает два сложных (нескалярных) типа: массивы и объекты. Каждый из этих типов может быть присвоен переменной или возвращён из функции.

Итак, пользователи PHP/FI 2 не должны почувствовать каких-либо изменений. Однако PHP продвинул выражения значительно дальше, как и многие другие языки. PHP это язык, ориентированный на выражения, рассматривающий почти любое действие как выражение. Рассмотрим тот же пример: '$a = 5'. Хорошо видно, что здесь имеются два значения, значение целочисленной константы '5' и значение переменной $a, которая также обновляется до 5. Но здесь имеется и ещё одно дополнительное значение: это значение самого присвоения. Само присвоение вычисляется в присвоенное значение, в данном случае - в 5. На практике это означает, что '$a = 5', независимо от того, что оно делает, является выражением со значением 5. Таким образом, если записать что-нибудь вроде '$b = ($a = 5)', это будет равносильно записи '$a = 5; $b = 5;' (; обозначает конец оператора). Поскольку присвоения разбираются слева направо, вы можете также записать '$b = $a = 5'.

Другой хороший пример ориентации на выражения - пре- и пост-инкремент и декремент. Пользователи PHP/FI 2 и многих других языков уже наверняка знакомы с нотацией переменная++ и переменная--. Это операции инкремента и декремента. В PHP/FI 2 оператор '$a++' не имеет значения (не является выражением), и, таким образом, вы не можете присвоить его или использовать иным образом. PHP улучшает возможности операций increment/decrement, делая их также выражениями, как в C. В PHP, как и в C, есть два типа инкремента: pre-increment и post-increment. И pre-increment, и post-increment увеличивают значение переменной на 1, и значения переменной идентичны. Разница в значении выражения инкремента. Pre-increment, который записывается как '++$variable', вычисляется в новое значение (PHP сначала увеличивает значение, прежде чем его прочитать, отсюда название 'pre-increment'). Post-increment, который записывается '$variable++', вычисляет оригинальное значение переменной $variable, а затем выполняет инкремент (PHP увеличивает переменную после чтения её значения, отсюда название 'post-increment').

Очень распространённый тип выражений - выражения сравнения. Они вычисляются в 0 или 1, означая FALSE или TRUE (соответственно). PHP поддерживает > (больше), >= (больше или равно), == (равно), != (не равно), < (меньше) и <= (меньше или равно). Эти выражения чаще всего используются внутри условных операторов, таких как if.

Последний пример выражений, рассматриваемых нами здесь, это комбинированные выражения вида операция-присвоение. Вы уже знаете, что, если вы хотите увеличить $a на 1, вы просто записываете '$a++' или '++$a'. Но что, если вы хотите добавить больше, чем 1, например, 3? Вы можете, конечно, записать '$a++' несколько раз, но это, очевидно, не самый эффективный и удобный способ. Чаще всего записывают '$a = $a + 3'. '$a + 3' вычисляется в значение $a плюс 3, и оно присваивается обратно переменной $a, что увеличивает значение $a на 3. В PHP, как и в некоторых других языках вроде C, вы можете записать это сокращённо, что со временем даст возможность легче читать и понимать код. Добавить 3 к текущему значению $a можно, записав '$a += 3'. Это означает "взять значение переменной $a, прибавить к нему 3 и присвоить новое значение этой же переменной $a". Помимо того, что это понятнее, это также ускоряет выполнение. Значением '$a += 3', как значением регулярного выражения, является присвоенное значение. Заметьте, что это НЕ 3, а объединённое значение переменной $a плюс 3. Любая двухместная операция может использоваться в таком режиме операция-присвоение, например, '$a -= 5' (вычесть 5 из значения переменной $a), '$b *= 7' (умножить значение переменной $b на 7), etc.

Имеется ещё одно выражение, которое может показаться неоднозначным, если вы не встречали его в других языках, тернарная условная операция:

$first ? $second : $third

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

Следующий пример должен помочь понять pre- и post-increment и выражения:

function double($i)
{
    return $i*2;
}
$b = $a = 5;        /* присвоить значение 5 переменным $a и $b */
$c = $a++;          /* post-increment, присвоить оригинальное значение $a 
                       (5) переменной $c */
$e = $d = ++$b;     /* pre-increment, присвоить увеличенное значение
                       $b (6) переменным $d и $e */

/* с этого места $d и $e равны 6 каждая */

$f = double($d++);  /* присвоить дважды значение $d до
                       инкремента, 2*6 = 12, переменной $f */
$g = double(++$e);  /* присвоить дважды значение $e после
                       инкремента, 2*7 = 14, переменной $g */
$h = $g += 10;      /* сначала $g увеличивается на 10 и останавливается на
                       значении 24. Значение присвоения (24) присваивается
                       затем переменной $h, и $h получает окончательное
                       значение - также 24 . */

В начале главы мы говорили, что опишем различные типы операторов, и, как и было обещано, показали, что выражения могут быть операторами. Однако не каждое выражение является оператором. В нашем случае оператор имеет форму 'expr' ';'  - то есть выражения с последующим символом "точка с запятой". В '$b=$a=5;', $a=5 является правильным выражением, но это не оператор. '$b=$a=5;', однако, это правильный оператор.

Последнее важное, что необходимо рассмотреть, это условная часть выражений. Часто (особенно в при условном выполнении и в циклах) вас интересует не конкретное значение выражения, а только то, вычисляется оно в TRUE или в FALSE. Константы TRUE и FALSE (чувствительны к регистру) это два возможных булевых значения. Когда это необходимо, выражение автоматически конвертируется в boolean. См. раздел о приведении типов.

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

В последующих разделах учебника мы будем записывать expr для обозначения правильного PHP-выражения.


Назад Оглавление Вперёд
Предопределённые константы ВверхОперации