Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vtoraya_chast_uchebnika_po_WWW_Okonchat_variant...doc
Скачиваний:
33
Добавлен:
27.09.2019
Размер:
6.06 Mб
Скачать

1.4.3.9. Манипуляции с типами

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

Приведём некоторые правила PHP, определяющие тип результата выражений:

1. PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присвоите строковое значение переменной $var, $var станет строкой. Если вы затем присвоите $var целочисленное значение, она станет целым числом.

2. Примером автоматического преобразования типа является оператор сложения '+'. Если любой из операндов является числом с плавающей точкой, то все операнды интерпретируются как числа с плавающей точкой, результатом будет также число с плавающей точкой. В противном случае операнды будут интерпретироваться как целые числа, и результат также будет целочисленным. Обратите внимание, что это НЕ МЕНЯЕТ типы самих операндов; меняется только то, как они вычисляются.

<?php

$foo = "0"; // $foo это строка (ASCII 48)

$foo += 2; // $foo теперь целое число (2)

$foo = $foo + 1.3; // $foo теперь число с плавающей точкой (3.3)

$foo = 5 + "10 Little Piggies"; // $foo это целое число (15)

$foo = 5 + "10 Small Pigs"; // $foo это целое число (15)

?>

3. В PHP (как в языках C, С++, C#) возможно принудительное приведение типов. Для этого имя требуемого типа записывается в круглых скобках перед приводимой переменной.

<?php

$foo = 10; // $foo это целое число

$bar = (boolean) $foo; // $bar это булев тип

?>

Допускаются следующие приведения типов:

(int), (integer) - приведение к целому числу

(bool), (boolean) - приведение к булеву типу

(float), (double), (real) - приведение к числу с плавающей точкой (float)

(string) - приведение к строке

(array) - приведение к массиву

(object) - приведение к объекту

Внутри скобок допускаются пробелы и символы табуляции, поэтому следующее равносильно по своему действию:

<?php

$foo = (int) $bar;

$foo = ( int ) $bar;

?>

Подробнее о правилах преобразования типах рекомендуем смотреть ресурс http://www.php.ru/manual , глава 11.Типы, раздел «Манипуляции с типами».

Глава 2. Синтаксис и семантика операторов php

2.1. Классификация операторов php и порядок их выполнения

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

Отсюда следует, что функции или любые другие конструкции, которые возвращают значение (например, print()), являются операторами, в отличие от всех остальных языковых конструкций (например, echo()), которые ничего не возвращают.

Представим совокупность основных операторов языка в виде классификационной таблицы (Таблица 2-1). Эта классификация делит операторы по крупным группам. Далее приведена ещё одна возможная классификация операторов. Она более подробная, и её можно назвать «конкретно-функциональной».

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

Таблица 2‑3

Классификация основных операторов PHP по группам

Тип 1 уровня

Тип 2 уровня

Тип 3 уровня

Операторы обработки данных

Математические

Арифметические

Математические

функции

Присваивания

Инкремента и декремента

Операторы над массивами15

Строковые

Операторы над строками

Операторы над массивами

Строковые функции

Побитовые

Логические

Операторы сравнения

Сравнения арифметических величин

Эквивалентности

Операторы логических операций

Операторы управления выполнения скрипта

Условные операторы

Операторы цикла

Операторы прерывания циклов

Приведём ещё одну возможную классификацию операторов PHP:

  1. Арифметические операторы PHP

  2. Логические операторы PHP

  3. Строковые операторы PHP

  4. Побитовые операторы PHP

  5. Операторы присвоения PHP

  6. Операторы сравнения PHP

  7. Операции инкремента и декремента PHP

  8. Операторы эквивалентности PHP

  9. Операции с символьными переменными PHP

  10. Приоритеты операторов PHP

  11. Операторы исполнения PHP

  12. Операторы работы с массивами

  13. Операторы управления ошибками PHP

  14. Операторы классов PHP

Приоритет операторов

Как правило, в программах выражения включают не один оператор. Поэтому актуален вопрос о порядке их выполнения. Практически в любом языке программирования принято правило определения порядка выполнения операторов в зависимости от присвоенного им приоритета.

Правила таковы:

  1. Если в выражении нет скобок, то раньше выполняются операторы с более высоким приоритетом.

  2. Операторы с одинаковым приоритетом выполняются в порядке их следования слева направо.

  3. Скобки увеличивают приоритет операторов выражения внутри них. Причём наибольшим приоритетом наделяется наиболее внутренняя скобка.

  4. Функции, входящие в выражении, обладают наивысшим приоритетом.

В таблице Таблица 2 -4 приводится приоритеты операторов с указанием их ассоциативности.

Таблица 2‑4