Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROSY_PO_IP.docx
Скачиваний:
16
Добавлен:
18.05.2015
Размер:
693.24 Кб
Скачать

20.Понятие выражения и правила определения типа выражения в php.

Выражения - это краеугольный камень PHP. Почти все, что вы пишите в PHP, является выражением. Под выражением в PHP понимается то, что имеет значение. И обратно: если что-то имеет значение, то это "что-то" и есть выражение. Выражения являются "кирпичиками", из которых состоят PHP-программы. Главное в осмыслении понятия – выражения «держат» значения.

Основными (базовыми) формами выражений являются константы и переменные. Но они должны каким-либо способом обрабатываться в программе. Способы обработки задаются операторами. Простейшим из них является оператор присваивания. Например, если вы записываете:

$a = 100

вы присваиваете '100' переменной $a.

В приведенном примере $a - это переменная, знак «=» - это оператор присваивания, а 100 - выражение. Его значение 100.

Выражением может быть и переменная, если ей сопоставлено определенное значение:

$x = 7; $y = $x;

В первой строке рассмотренного примера выражением является константа 7, а во второй строке - переменная $x, т.к. ранее ей было присвоено значение 7. $y = $x также является выражением.

Немного более сложными примерами выражений являются функции. Например, рассмотрим следующую функцию:

Ясно, что запись $x = funct() абсолютно эквивалента записи $x = 5.

Функции - это выражения, значением которых является то, что возвращает функция. Поскольку funct() возвращает 5, значением выражения 'funct()' является 5. Как правило, функции возвращают не статическое значение, а вычисленное.

PHP поддерживает три типа скалярных значений: целочисленные, с плавающей точкой и строковые значения (скалярными являются значения, которые вы не можете 'разбить' на меньшие части, в отличие, например, от массивов). PHP поддерживает также два комбинированных (не скалярных) типа: массивы и объекты. Каждый из этих типов значений может присваиваться переменной или возвращаться функцией, и, следовательно, являться выражениями.

PHP - это язык, ориентированный на выражения и рассматривающий почти все как выражение. Вернемся к выражению: $x = 7. Легко заметить, что здесь присутствуют два значения - значение целочисленной константы '7' и значение переменной $x, также принимающей значение 7. Но на самом деле здесь присутствует и еще одно значение - значение самого присвоения. Само присвоение вычисляется в присвоенное значение, в данном случае - в 7. На практике это означает, что $x = 7 независимо оттого, что оно делает, является выражением со значением 7. Таким образом, запись $y = ($x = 7) равносильна записи $x = 7; $y = 7; (точка с запятой обозначает конец выражения). Поскольку операции присвоения анализируются справа налево, вы также можете написать '$y = $x = 7'.

Обобщая понятия выражения в PHP, можно сформулировать следующее определение:

Выражением называется совокупность выражений (операндов), соединённых математическими операндами (знаками операций): арифметическими, логическими. Базовыми (элементарными) выражениями являются строки, константы и переменные. Имя функции также является выражением (операндом).

Логические выражения

Логические выражения — это выражения, у которых могут быть только два значения: ложь и истина (или, что почти то же самое, 0 и 1).

Строковые выражения

Строки в PHP — одни из самых основных объектов. Они могут содержать текст вместе с символами форматирования или даже бинарные данные.

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

Приведём некоторые правила 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;

?>