Выражения являются наиболее важными строительными блоками PHP. В PHP почти все, что вы пишете, является выражением. Самый простой, но самый точный способ определить выражение — «все, что имеет значение».
Самыми основными формами выражений являются константы и переменные. Когда вы вводите « $a = 5», вы присваиваете «5» переменной $a . «5», очевидно, имеет значение 5, или, другими словами, «5» — это выражение со значением 5 (в данном случае «5» — целочисленная константа).
После этого присваивания вы ожидаете, что значение $a также будет равно 5, поэтому, если вы напишете $b = $a , вы ожидаете, что оно будет вести себя так же, как если бы вы написали $b = 5. Другими словами, $a также является выражением со значением 5. Если все работает правильно, это именно то, что произойдет.
Несколько более сложными примерами выражений являются функции. Например, рассмотрим следующую функцию:
<?php
function foo ()
{
return 5;
}
?>
Предполагая, что вы знакомы с концепцией функций, вы полагаете, что набор текста $c = foo()
по существу ничем не отличается от написания $c = 5
, и вы правы. Функции — это выражения со значением их возвращаемого значения. Поскольку foo()
возвращает 5, значение выражения ' foo()
' равно 5. Обычно функции не просто возвращают статическое значение, но что-то вычисляют.
Конечно, значения в PHP не обязательно должны быть целыми числами, и очень часто они таковыми не являются. PHP поддерживает четыре типа скалярных значений: значения int , значения с плавающей запятой ( float ), строковые значения и логические значения (скалярные значения — это значения, которые нельзя «разбить» на более мелкие части, в отличие, например, от массивов). PHP также поддерживает два составных (не скалярных) типа: массивы и объекты. Каждый из этих типов значений может быть присвоен переменным или возвращен из функций.
PHP использует выражения гораздо дальше, как и многие другие языки. PHP — это язык, ориентированный на выражения, в том смысле, что почти все является выражением. Рассмотрим пример, с которым мы уже имели дело, ' $a = 5'. Легко видеть, что здесь участвуют два значения: значение целочисленной константы '5' и значение $a , которое также обновляется до 5. Но правда в том, что здесь задействовано одно дополнительное значение, и это значение самого присваивания. Само присваивание возвращает присвоенное значение, в данном случае 5. На практике это означает, что ' $a = 5', независимо от того, что оно делает, является выражением со значением 5. Таким образом,= ( $a = 5)' похоже на запись ' $a = 5; $b = 5;' (точка с запятой отмечает конец оператора). Поскольку присваивания анализируются в порядке справа налево, вы также можете написать ' $b = $a = 5'.
Другим хорошим примером ориентации выражения является пре- и постинкремент и декремент. Пользователи PHP и многих других языков могут быть знакомы с обозначениями variable++
и variable--
. Это операторы инкремента и декремента . В PHP, как и в C, есть два типа инкремента — пре-инкремент и пост-инкремент. И пре-инкремент, и пост-инкремент по существу увеличивают переменную, и эффект на переменную идентичен. Разница заключается в значении выражения приращения. Предварительное приращение, которое записывается как «++ $variable », оценивается как увеличенное значение (PHP увеличивает переменную перед чтением ее значения, отсюда и название «предварительное приращение»). Пост-инкремент, который пишется '++' оценивается как исходное значение $variable до того, как оно было увеличено (PHP увеличивает переменную после чтения ее значения, отсюда и название "post-increment").
Очень распространенным типом выражений являются выражения сравнения . Эти выражения оцениваются как либо , false
либо true
. PHP поддерживает > (больше), >= (больше или равно), == (равно), != (не равно), < (меньше) и <= (меньше или равно). Язык также поддерживает набор операторов строгой эквивалентности: === (равно и того же типа) и !== (не равно или не того же типа). Эти выражения чаще всего используются внутри условного выполнения, например if
операторов.
Последний пример выражений, с которыми мы здесь будем иметь дело, — это комбинированные выражения оператор-присваивание. Вы уже знаете, что если вы хотите увеличить $a на 1, вы можете просто написать ' $a ++' или '++ $a '. Но что, если вы хотите добавить к нему более одного, например, 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 ).). В этом режиме присваивания можно использовать любой двузначный оператор, например ' $a -= 5' (вычесть 5 из значения $a ), ' $b *= 7' (умножить значение $b на 7) и др.
Есть еще одно выражение, которое может показаться странным, если вы не видели его в других языках, — тернарный условный оператор:
<?php
$first ? $second : $third
?>
Если значение первого подвыражения true
(отлично от нуля), то вычисляется второе подвыражение, которое является результатом условного выражения. В противном случае оценивается третье подвыражение, которое и является значением.
Следующий пример должен помочь вам немного лучше понять пре- и постинкремент и выражения в целом:
<?php
function double($i)
{
return $i*2;
}
$b = $a = 5; /* assign the value five into the variable $a and $b */
$c = $a++; /* post-increment, assign original value of $a
(5) to $c */
$e = $d = ++$b; /* pre-increment, assign the incremented value of
$b (6) to $d and $e */
/* at this point, both $d and $e are equal to 6 */
$f = double($d++); /* assign twice the value of $d before
the increment, 2*6 = 12 to $f */
$g = double(++$e); /* assign twice the value of $e after
the increment, 2*7 = 14 to $g */
$h = $g += 10; /* first, $g is incremented by 10 and ends with the
value of 24. the value of the assignment (24) is
then assigned into $h, and $h ends with the value
of 24 as well. */
?>
Некоторые выражения можно рассматривать как операторы. В этом случае оператор имеет форму ' expr ;
', то есть выражение, за которым следует точка с запятой. In '$b = $a = 5;'
, '$a = 5'
является допустимым выражением, но это не оператор сам по себе. '$b = $a = 5;'
однако верное утверждение.
Последнее, о чем стоит упомянуть, — это значение истинности выражений. Во многих событиях, в основном при условном выполнении и циклах, вас не интересует конкретное значение выражения, а только то, означает ли оно true
или false
. Константы true
и false
(без учета регистра) являются двумя возможными логическими значениями. При необходимости выражение автоматически преобразуется в логическое значение.
PHP обеспечивает полную и мощную реализацию выражений, и ее полное документирование выходит за рамки данного руководства. Приведенные выше примеры должны дать вам хорошее представление о том, что такое выражения и как вы можете создавать полезные выражения. В оставшейся части этого руководства мы будем писать expr для обозначения любого допустимого PHP-выражения.
0 комментариев