http://sulfurzona.ru/
News
Service
Magazine
Software (Battle City Game, Wallpaper manager, Superpad, VG-NOW, Puzzle Game, Netler Internet Browser, ..)
Wing-Thunder Game (fly simulator)
Dune Game (Dune III, Dune IV, Cheats, Forum, ..)
Games free
Turbo Pascal (Assembler, Docs, Sources, Debbugers, ..)
Books (Docs for developers)
Guest book
Компьютерная диагностика двигателя автомобиля (адаптер К-линии)Компьютерная диагностика двигателя автомобиля (адаптер К-линии)
 
 
Скачать игру Крыло-Гром (Wing-Thunder) бесплатно
 
 

PHP и WEB для новичков (часть 2)

 

Выражения и операторы

 
Автор: Владислав Демьянишин
 
PHP и WEB для новичковОператор – это наименьшая часть программы, которая выполняется как одно целое. Ранее мы рассматривали пример оператора присваивания “=” (равно) и вызов функции echo, который тоже является оператором. Синтаксис PHP требует, чтобы операторы отделялись друг от друга знаком ";" (точка с запятой), что вы тоже могли заметить в предыдущих примерах.
 
Когда необходимо выполнить несколько операторов как одно целое, тогда их заключают в фигурные скобки { } – все, что находится внутри, выполняется как один оператор и называется составным оператором. Детально составные операторы рассмотрим чуть позже.
Как и в любом другом языке программирования, в PHP выражения играют важнейшую роль при вычислении значений для переменных. Обычно выражение строится из операндов, знаков операций и круглых скобок.
 
В качестве операндов могут быть константы, переменные, элементы массивов, поля объектов, вызовы функций, строки в случаях конкатенации (сложения строк).
Каждая операция означает некоторые действия по калькуляции новых значений из значений операндов. Операции могут обозначаться специальными комбинациями символов или специальными зарезервированными служебными словами. Пример:
 
$a = 5;
$b = $a + 10;
$c = $a * $b + 15;
 
Тут мы видим три оператора присваивания, отделенные друг от друга точкой с запятой. Каждый из этих операторов присваивает переменной, указанной слева от знака “=” значение выражения, расположенного справа от знака “=”, то есть 5, $a+10, $a*$b+15 соответственно.
В выражениях могут использоваться знаки операций – математических, логических, текстовых и др. Таблицы 1 и 2 содержат перечень операций, которые могут применяться в выражениях.
 
Таблица 1. Арифметические операции
Пример
Название
Результат
$a + $b
Сложение
Сумма $a и $b
$a - $b
Вычитание
Разность $a и $b
$a * $b
Умножение
Результат умножения $a на $b
$a / $b
Деление
Результат деления $a на $b (результат будет иметь тип float)
$a % $b
Остаток
Остаток от деления $a на $b (результат будет иметь тип int)
 
Таблица 2. Логические операции
Пример
Название
Результат
$a == $b
Эквивалентность
true, если $a равно $b
$a === $b
Идентичность
true, если $a равно $b и при этом они одного типа
$a != $b
Не равно
true, если $a не равно $b
$a <> $b
Не равно
true, если $a не равно $b
$a !== $b
Не-идентичность
true, если $a не равно $b или они имеют разные типы
$a < $b
Меньше
true, если $a меньше $b
$a > $b
Больше
true, если $a больше $b
$a <= $b
Меньше или равно
true, если $a меньше или равно $b
$a >= $b
Больше или равно
true, если $a больше или равно $b
$a && $b
"И"
true, если $a=true и $b=true
$a and $b
"И"
true, если $a=true и $b=true
$a ¦¦ $b
"ИЛИ"
true, если $a=true или $b=true
$a or $b
"ИЛИ"
true, если $a=true или $b=true
$a xor $b
"ИЛИ-НЕ"
true, если $a=true или $b=true, но не оба
!$a
"НЕ"
true, если $a!=true
 
Логические операции применяются в условных конструкциях, которые будут рассматриваться позднее. Следует быть особенно внимательным, чтобы не путать оператор присваивания “=” (один знак равенства) с операцией эквивалентности “==” (два знака равенства подряд). Все дело в том, что сам оператор присваивания может интерпретироваться как выражение, например такая конструкция
 
$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. Приоритеты операций
Порядок
Операции
Слева
,
Слева
Or
Слева
Xor
Слева
And
Справа
Print
Слева
= += -= *= /= .= %= &= ¦= ^= ~= <<= >>=
Слева
? :
Слева
¦¦
Слева
&&
Слева
¦
Слева
^
Слева
&
не имеет значения
== != === !==
слева
< <= > >=
слева
<< >>
слева
+ - .
слева
* / %
справа
! ~ ++ - (int) (double) (string) (array) (object) @
справа
[
не имеет значения
new
 

Преобразование и конвертирование

 
Численные и строковые выражения могут содержать как имена переменных и констант, так и вызовы функций, которые могут использоваться для получения или преобразования некоторого значения. Например, функции нельзя использовать с массивами и объектами целиком, но можно с их отдельными элементами и полями:
 
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): Выражения и операторы
 
 
 
 
 
 
На главную страницу На предыдущую страницу На начало страницы