|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PHP и WEB для новичков (часть 2)Выражения и операторыАвтор: Владислав Демьянишин
Оператор – это наименьшая часть программы, которая выполняется как одно целое. Ранее мы рассматривали пример оператора присваивания “=” (равно) и вызов функции echo, который тоже является оператором. Синтаксис PHP требует, чтобы операторы отделялись друг от друга знаком ";" (точка с запятой), что вы тоже могли заметить в предыдущих примерах.
Когда необходимо выполнить несколько операторов как одно целое, тогда их заключают в фигурные скобки { } – все, что находится внутри, выполняется как один оператор и называется составным оператором. Детально составные операторы рассмотрим чуть позже.
Как и в любом другом языке программирования, в PHP выражения играют важнейшую роль при вычислении значений для переменных. Обычно выражение строится из операндов, знаков операций и круглых скобок.
В качестве операндов могут быть константы, переменные, элементы массивов, поля объектов, вызовы функций, строки в случаях конкатенации (сложения строк).
Каждая операция означает некоторые действия по калькуляции новых значений из значений операндов. Операции могут обозначаться специальными комбинациями символов или специальными зарезервированными служебными словами. Пример:
$a = 5;
$b = $a + 10;
$c = $a * $b + 15;
Тут мы видим три оператора присваивания, отделенные друг от друга точкой с запятой. Каждый из этих операторов присваивает переменной, указанной слева от знака “=” значение выражения, расположенного справа от знака “=”, то есть 5, $a+10, $a*$b+15 соответственно.
В выражениях могут использоваться знаки операций – математических, логических, текстовых и др. Таблицы 1 и 2 содержат перечень операций, которые могут применяться в выражениях.
Таблица 1. Арифметические операции
Таблица 2. Логические операции
Логические операции применяются в условных конструкциях, которые будут рассматриваться позднее. Следует быть особенно внимательным, чтобы не путать оператор присваивания “=” (один знак равенства) с операцией эквивалентности “==” (два знака равенства подряд). Все дело в том, что сам оператор присваивания может интерпретироваться как выражение, например такая конструкция
$b = ($a = 5) + 10;
echo $b;
выдаст число 15, поскольку выражение содержит конструкцию $a = 5, что само по себе интерпретируется как выражение и выполняется, чтобы получить результат и дать возможность перейти к операциям за круглыми скобками. Таким образом переменной $a присваивается число 5, и после этого выполняется операция сложения.
Аналогично работают и операции присваивания с операцией: +=, -=, *=, /=, например:
$a = 1;
$a += 5; // $a == 6
$a -= 2; // $a == 4
$a *= 3; // $a == 12
$a /= 6; // $a == 2
В данном случае "//" означает коментарий. Все, что стоит в строке программы после этого знака, игнорируется и не выполняется. Это позволяет оставлять в коде программы поясняющие комментарии для более детального его понимания в дальнейшем. Если необходимо несколько строк разом сделать комментарием, то достаточно их заключить в конструкцию /*…*/
В данный момент комментарии показывают, какой результат получится в каждом выражении. Операция "+=" означает присвоение с прибавлением, то есть $a += 5 означает, что к текущему значению переменной $a прибавится еще 5. Операция "-=" присвоения с вычитанием, "*=" – с умножением, "/=" – с делением.
Следует также пояснить разницу между операцией «равно» (==, два знака равенства подряд) и «идентично» (===, три знака равенства подряд). PHP имеет достаточно демократичную политику типов переменных, то есть тип переменной определяется на этапе присвоения ей значения, и согласно контексту. Например, в таком случае:
$a = 5;
$b = "5";
переменные будут разного типа, $a – типа int, а $b – типа string. Однако в данном случае условие $a==$b будет истинно (поскольку на самом деле эти переменные содержат одно и то же число, эквивалентное 5), но условие $a===$b не будет истинно, поскольку эти переменные имеют разный тип, а значит не совсем идентичны.
Существуют так называемые унарные операции прибавления и отнимания, которые уменьшают или увеличивают значение переменной на единицу:
$a = 1;
$a++; // значение $a увеличилось на единицу
echo "a=$a,"; // выдаст "a=2"
$a-; // значение $a уменьшилось на единицу
echo "a=$a"; // выдаст "a=1"
Если применять унарные операции в выражениях, то следует знать, что эти операции имеют два вида записи – префиксный (пишутся перед именем переменной) и постфиксный (пишутся после имени переменной). Разница состоит в том, что в префиксном варианте значением выражения будет увеличенное или уменьшенное значение переменной, а в постфиксном – нет. Пример:
$a = 1;
$b = $a++; // $a = 2, $b = 1
$b = ++$a; // $a = 3, $b = 3
$b = -$a; // $a = 2, $b = 2
$b = $a-; // $a = 1, $b = 2
Не следует забывать и приоритеты операций. Если выражение состоит из большого количества операций, то они выполняются в строгом порядке согласно их приоритетам. Еще из школьного курса арифметики известно, что операции умножения и деления имеют приоритет больший, чем у операций сложения и вычитания, то есть в выражении
$a*$b + $c*$d
сначала вычисляются произведения $a на $b и $c на $d, и уже только потом их результаты складываются, и никак иначе. Если же необходимо сначала выполнить сложение, то необходимо использовать круглые скобки, которые повышают приоритет подвыражения:
$a*($b + $c)*$d
В следующей таблице указаны приоритеты операций (см. таблицу 3). Многие из этих операций еще не были разъяснены, но таблица может пригодиться в дальнейшем. «Порядок» означает, относительно какого знака операции определяется приоритет – справа или слева от текущего.
Таблица 3. Приоритеты операций
Преобразование и конвертированиеЧисленные и строковые выражения могут содержать как имена переменных и констант, так и вызовы функций, которые могут использоваться для получения или преобразования некоторого значения. Например, функции нельзя использовать с массивами и объектами целиком, но можно с их отдельными элементами и полями:
strval(переменная) - возвращает текстовое представление значения переменной
floatval(переменная) или doubleval(переменная) - возвращает текстовое представление значения вещественной переменной отбрасывая все ненужное
intval(переменная) - возвращает текстовое представление значения целой переменной, отбрасывая ненужное
$a = 10;
$b = 20.51;
$c = "15.37abc";
echo strval($a); // 10
echo strval($c); // 15.37abc
echo floatval($a); // 10
echo floatval($b); // 20.51
echo floatval($c); // 15.37
echo doubleval($a); // 10
echo doubleval($b); // 20.51
echo doubleval($c); // 15.37
echo intval($a); // 10
echo intval($b); // 20
echo intval($c); // 15
strtotime ( string time [, int now] ) - первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени Unix (в виде целого 32-битного числа) относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен. В случае ошибки возвращается -1.
Функция strtotime() использует GNU формат даты, поэтому рекомендуется ознакомиться с руководством GNU Date Input Formats, где описывается синтаксис аргумента time.
echo date("d.m.Y",strtotime("2009-01-31 02:00:00")); // 31.01.2009
echo date("d.m.Y",strtotime("now"));
echo date("d.m.Y",strtotime("10 September 2000"));
echo date("d.m.Y",strtotime("+1 day"));
echo date("d.m.Y",strtotime("+1 week 2 days 4 hours 2 seconds"));
echo date("d.m.Y",strtotime("next Thursday"));
echo date("d.m.Y",strtotime("last Monday"));
floor(переменная) - округляет вещественное до ближайшего меньшего целого, т.е. по сути отбрасывает дробную часть и возвращает целую часть числа:
echo floor(4.3); // 4
echo floor(9.999); // 9
ceil(переменная) - округляет вещественное до ближайшего большего целого:
echo ceil(4.3); // 5
echo ceil(9.999); // 10
Следующая функция имеет синтаксис
string number_format ( float number [, int decimals] )
string number_format ( float number, int decimals, string dec_point, string thousands_sep )
принимает один, два или четыре аргумента (не три) и возвращает отформатированное число с разделением групп. Если передан только один аргумент, то он будет отформатирован без дробной части, но с запятой (",") между группами цифр по 3.
Если переданы два аргумента, number будет отформатирован с decimals знаками после точки (".") и с запятой (",") между группами цифр по 3.
Если переданы все четыре аргумента, number будет отформатирован с decimals знаками после точки и с разделителем между группами цифр по 3, при этом в качестве десятичной точки будет использован dec_point, а в качестве разделителя групп – thousands_sep (строка должна быть длиной в один символ).
echo number_format(1234567.89123); // Английский формат (по умолчанию) 1,234,568
echo number_format(1234567.89,2); // 1,234,567.89
echo number_format(1234567.89,3,',','a'); // 1a234a567,890
echo number_format(1234567.89,3,'.',' '); // Французский формат 1 234 567.890
echo number_format(1234567.89,3,'.',''); // Английский формат без разделения групп 1234567.890
Поскольку обо всех функциях рассказать в данном материале невозможно, то даю краткий список полезных:
Abs(arg) - возвращает абсолютное значение аргумента
Chr(arg) - возвращает символ ASCII, заданный целочисленным аргументом
Cos(arg) - возвращает косинус аргумента, заданного в радианах
DecBin(number) - возвращает строку, содержащую двоичное представление заданного аргумента. Самое большое число, которое может быть преобразовано, ограничено длиной 32 бит или значением 4294967295 в десятичном представлении. См. также функцию BinDec().
DecHex(number) - преобразовывает десятичное число в шестнадцатеричную строку. См. также функцию HexDec().
DecOct(number) - преобразует десятичное число в восьмеричное число. См. также OctDec().
Exp(arg) – вычисляет экспоненту и возвращает E, с степени arg
Log(arg) - возвращает натуральный логарифм аргумента
Log10(arg) - возвращает логарифм аргумента по основанию 10
Ord(arg) - возвращает ASCII значение первого символа параметра
Sin(arg) - возвращает синус аргумента в радианах
Sqrt(arg) - возвращает квадратный корень
Tan(arg) - возвращает тангенс в радианах
Рекомендую зайти на сайт www.php.su/functions/ в раздел справочника функций и там узнать более подробно об этих и других функциях.
© Владислав Демьянишин
На нашем сайте можно не только бесплатно скачать игры, но и документацию и книги по программированию на MIDLetPascal, Turbo Pascal 6, Turbo Pascal 7, Borland Pascal, по программированию устройств Sound Blaster, Adlib, VESA BIOS, справочник Norton Guide и много другой полезной информации для программистов, включая примеры решения реальных задач по созданию резидентных программ. Журнал > Программирование > PHP и WEB для новичков (HTML, JavaScript, PHP, MySQL) > PHP и WEB для новичков (часть 2): Выражения и операторы
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||