Теперь, когда вы познакомились с основными типами данных РНР, давайте посмотрим, какие манипуляции возможны с этими типами данных для реализации вычислений и прочих действий в РНР. Как и можно было ожидать, РНР поддерживает все базовые математические операции, как и любой другой язык программирования, включая сложение и умножение, а также широкий диапазон тригонометрических и логарифмических функций. Помимо математических операций РНР поддерживает большой объем функций манипуляции со строками. В настоящей главе раскрываются только наиболее фундаментальные манипуляции с переменными, действительные как для строк, так и для чисел. Выполнение математических операций в РНР — интуитивно понятная задача. РНР поддерживает все общепринятые математические стандарты приоритетов операций, группировки и прочее — как для целых, так и для действительных чисел с плавающей точкой. Так, например, простые математические вычисления в РНР могут быть реализованы так, как показано в листинге 1.8.
НА ЗАМЕТКУ При выполнении математических вычислений приоритет операций определяет порядок их выполнения. Подробный список приоритетов операций РНР содержится в руководстве по РНР, которое доступно по адресу:http://www.php.net/manual/language.operator.php
Листинг 1.8. Простые вычисления с переменными РНР $answer = 5 + 4 ; /* $answer теперь равно 9 */ $answer = $answer - 5; . /* $answer теперь равно 4 */ $answer = $answer/2; /* $answer теперь равно 2 */ $answer = 1/3; /* Sanswer теперь равно 0.333333 */ $answer =((5 + 4)*2)%7; /* $answer теперь равно 4 */
НА ЗАМЕТКУ В приведенном выше примере используется операция деления по модулю %. Эта операция применяется для вычисления остатка от целочисленного деления. В данном случае вы определяете остаток от деления целого числа 18 на целое число 7. Поскольку 7 * 2 = 14, модуль будет равен 18-14 = 4.
Важно знать, как обрабатываются числа с плавающей точкой в РНР, когда они конвертируются в целые. Например, значение 0.999999 при преобразовании в целое может превратиться в 0, в то время как в других системах оно может быть сведено к 1, как обычно и ожидается. Такая разница в поведении зависит от системы, на которой выполняется РНР, а не от самого РНР. Более подробную информацию на эту тему, включая описание того, как работает ваша конкретная система, можно получить в документации по РНР. Как и в большинстве других С-подобных языках программирования, в РНР также поддерживаются сокращенные формы записи операций. Рассмотрим вторую и третью строки из предыдущего примера. В них результат математической операции помещается в ту же переменную, которая служит операндом. Вместо использования предыдущего синтаксиса можно несколько сэкономить время, записав эти операции так, как показано в листинге 1.9.
Листинг 1.9. Сокращенная запись математических операций в РНР Присвоение исходного значения */ Эквивалент $answer = $answer + 2 ; */ $answer теперь равно 14 */ $answer теперь равно 4 */
Для еще большего упрощения можно использовать операции инкремента и декремента следующего вида.
Листинг 1.10. Сокращенная запись инкремента и декремента $answer++; /* Увеличивает $answer на 1 */ $answer--; /* Уменьшает $answer на 1 */ ++$answer; /* Увеличивает $answer на 1 (см. примечания) */ $answer $answer $answer Sanswer += 2; *t- 2; %= 5; / / / /
НА ЗАМЕТКУ Несмотря на то что и ++$answer, и $answer++ — корректные выражения РНР, которые увеличивают переменную $answer на единицу, они означают не совсем одно и то же. $answer++ увеличивает переменную $answer после выполнения оператора, в то время как ++$answer увеличивает переменную перед выполнением. Это существенная разница в ситуациях, подобных следующим:
Наряду с простой математикой РНР также поддерживает тригонометрические и логарифмические операции для сложных вычислений, например:
$cos = cos(2 * M_PI); /* косинус 2*PI равен 1 */
НА ЗАМЕТКУ М_Р1 — это предопределенная математическая константа в РНР. Полный список всех доступных математических (и прочих) констант можно посмотреть в руководстве РНР по адресу http://www.php.net/math.
Как было сказано, далее в настоящей главе будет обсуждаться большинство технологий манипуляции строками, доступных в РНР. Однако одну строковую операцию, которая есть в РНР, стоит рассмотреть сейчас — операцию конкатенации строк. Эта операция обозначается символом точки и применяется для комбинации двух отдельных переменных (обычно — строковых) в одн*у строку, как показано ниже: