ОСНОВЫ ЯЗЫКА PHP
Константы определяются в PHP-программе с помощью функции define( ).
Например:
После определения константа не может быть изменена. В имени константы обычно используются только заглавные буквы.
PHP имеет ряд предопределенных констант. Например:
_FILE_ содержит имя файла, который в данный момент читает PHP;
_LINE_ содержит номер строки этого файла.
Переменные
Имя любой переменной в PHP начинается со знака $. Имена переменных чувствительны к регистру символов.
Тип переменной не требуется задавать специально. Конкретный тип переменной устанавливается и меняется в ходе выполнения программы.
PHP поддерживает восемь типов данных:
логический (принимает значения true или false);
целое число;
вещественное число с плавающей точкой;
строка;
объект;
массив;
ресурс (специальный тип);
null (специальный тип).
Тип переменной можно проверить с помощью функции gettype().
Пример 1
<head>
<title>Автоматическое изменение и проверка типа переменной</title>
</head>
<body>
<?php
$t = "0";
echo "t = $t -- ".gettype($t)."<br>";
$t += 2;
echo "t = $t -- ".gettype($t)."<br>";
$t = $t + 3.5;
echo "t = $t -- ".gettype($t)."<br>";
$t = 5 + "5 поросят";
echo "t = $t -- ".gettype($t)."<br>";
$t = 5.0 + "5 поросят";
echo "t = $t -- ".gettype($t);
?>
</body>
</html>
Тип переменной можно изменить с помощью функции settype().
Пример 2
<head>
<title>Изменение типа переменной</title>
</head>
<body>
<?php
$t = 3.14;
echo "t = $t -- ".gettype($t)."<br>";
settype($t,"string");
echo "t = $t -- ".gettype($t)."<br>";
settype($t,"integer");
echo "t = $t -- ".gettype($t)."<br>";
settype($t,"double");
echo "t = $t -- ".gettype($t)."<br>";
settype($t,"boolean");
echo "t = $t -- ".gettype($t);
?>
</body>
</html>
Приведение типа переменной осуществляется с помощью операторов:
(bool) - к логическому типу;
(int) - к целому числу;
(double) - к вещественному числу;
(string) - к строке;
(array) - к массиву;
(object) - к объекту.
Отличие от изменения типа с помощью функции settype() состоит в том, что оператор приведения создает временную копию нового типа, оставляя саму переменную без изменений.
Пример 3
<head>
<title>Приведение типа переменной</title>
</head>
<body>
<?php
$t = 3.14;
$tmp = (string) $t;
echo "tmp = $tmp -- ".gettype($tmp)."<br>";
$tmp = (int) $t;
echo "tmp = $tmp -- ".gettype($tmp)."<br>";
$tmp = (double) $t;
echo "tmp = $tmp -- ".gettype($tmp)."<br>";
$tmp = (bool) $t;
echo "tmp = $tmp -- ".gettype($tmp)."<br>";
echo "t = $t -- ".gettype($t);
?>
</body>
</html>
Иногда для упрощения логики программы удобнее использовать переменные имена переменных. PHP предоставляет такую возможность в виде динамических переменных. Динамической называют переменную, имя которой хранится в ней самой.
Пример 4
<head>
<title>Использование динамической переменной</title>
</head>
<body>
<?php
$t = "Всем"; // переменной t присваиваем значение "Всем"
$$t = "привет!"; // Переменной "Всем" присваиваем значение "привет!"
echo "$$t ".$$t."<br>";
echo "$t ${$t}<br>";
echo "$t $Всем";
?>
</body>
</html>
В PHP возможно обращение к одной и той же переменной с использованием различных имен. Для реализации этого используются ссылки. Ссылки позволяют двум или большему количеству переменных ссылаться на одну и ту же область памяти.
Пример 5
<head>
<title>Создание ссылки на переменную</title>
</head>
<body>
<?php
$t1 = 96;
$t2 = &$t1;
echo "t1 = $t1; t2 = $t2<br>";
$t1 = 315;
echo "t1 = $t1; t2 = $t2";
?>
</body>
</html>
Операторы
Операторы PHP напоминают общеизвестные операторы языка Си.
Унарные операторы
| - | Изменение знака на противоположный |
| ! | Дополнение. Используется для реверсирования значения логических переменных |
| ++ | Увеличение значения переменной. Может применяться и как префикс, и как суффикс |
| -- | Уменьшение значения переменной. Может применяться и как префикс, и как суффикс |
Арифметические операторы
| - | Вычитание |
| + | Сложение |
| * | Умножение |
| / | Деление |
| % | Остаток от деления |
Оператор конкатенации
Оператор конкатенации "." присоединяет правую строку к левой.
Пример 6
<head>
<title>Конкатенация строк</title>
</head>
<body>
<?php
$a = "Всем";
$b = $a." привет!";
echo $b;
?>
</body>
</html>
Оператор конкатенации обрабатывает операнды любых типов как строки. Результат его выполнения всегда является строкой.
Операторы присваивания
| = | Присваивание |
| += | Сложение ($n += 777; аналогично $n = $n + 777;) |
| -= | Вычитание ($n -= 777; аналогично $n = $n - 777;) |
| *= | Умножение |
| /= | Деление |
| %= | Остаток от деления |
| .= | Конкатенация ($n .= "777"; аналогично $n = $n."777";) |
Битовые операторы
Битовые операторы позволяют изменять отдельные биты целых чисел.
| & | И |
| | | ИЛИ |
| ^ | Исключающее ИЛИ |
| ~ | Инверсия |
| >> | Сдвиг вправо |
| << | Сдвиг влево |
Операторы сравнения
| > | Больше |
| >= | Больше или равно |
| < | Меньше |
| <= | Меньше или равно |
| == | Равно |
| === | Идентично |
| != | Не равно |
| !== | Не идентично |
Логические операторы
Логические операторы отличаются от битовых тем, что работают не с числами, а с логическими значениями: TRUE и FALSE.
| and | И |
| or | ИЛИ |
| xor | Исключающее ИЛИ |
| ! | Инверсия |
| >> | Сдвиг вправо |
| << | Сдвиг влево |
| && | И |
| || | ИЛИ |
Логические операторы "И" и "ИЛИ" имеют два формата. Это не синонимы.
Дело в том, что оператор or имеет приоритет ниже, чем ||, а and - ниже, чем &&. Таким образом, при построении сложных условных выражений можно обойтись без скобок. Однако, в таком способе указания порядка проще и запутаться.
Управляющие структуры
Условные операторы
В языке PHP два условных оператора: if и ?.
Существует три типа оператора if. Первый тип - базовый условный оператор. Например:
{
echo "А больше Б";
}
Альтернативный синтаксис оператора if:
echo "А больше Б";
endif;
Второй тип - условный оператор if-else. Например:
{
echo "А больше Б";
}
else
{
echo "А не больше Б";
}
Альтернативный синтаксис оператора if-else:
echo "А больше Б";
else:
echo "А не больше Б";
endif;
Третий тип - условный оператор if-elseif. Например:
{
echo "А больше Б";
}
elseif ($a == $b)
{
echo "А равно Б";
}
else
{
echo "А меньше Б";
}
Альтернативный синтаксис оператора if-elseif:
echo "А больше Б";
elseif ($a == $b):
echo "А равно Б";
else:
echo "А меньше Б";
endif;
Условный оператор ? возвращает одно из двух значений, разделенных двоеточием. Использование оператора ? может сделать более компактным текст программы. Например:
echo $text;
Оператор выбора
Оператор выбора switch оценивает одно выражение и в зависимости от его значения выполняет один из нескольких блоков программы. Выражение в операторе switch чаще всего бывает простой переменной. Например:
{
case 1:
echo "А равно 1";
break;
case 2:
echo "А равно 2";
break;
case 3:
echo "А равно 3";
break;
default:
echo "А не равно ни 1, ни 2, ни 3";
}
Альтернативный синтаксис оператора switch:
case 1:
echo "А равно 1";
break;
case 2:
echo "А равно 2";
break;
case 3:
echo "А равно 3";
break;
default:
echo "А не равно ни 1, ни 2, ни 3";
endswitch;
Цикл с параметром
Цикл с параметром for относится к наиболее старому и заслуженному виду цикла.
Пример 7
<head>
<title>Цикл for</title>
</head>
<body>
<?php
for ($a = 11; $a <= 19; $a++)
{
echo "квадрат $a равен ".($a*$a)."<br>";
}
?>
</body>
</html>
Альтернативный синтаксис оператора for:
echo "квадрат $a равен ".($a*$a)."<br>";
endfor;
Циклы с условием
В языке PHP сущеcтвует два типа цикла с условием:
- while - цикл с предусловием;
- do .. while - цикл с постусловием.
Оператор while оценивает значение условия и, если оно истинно, выполняет действия в фигурных скобках (тело цикла). Как только значение условия станет ложным, выполнение цикла прекращается.
Пример 8
<head>
<title>Цикл while</title>
</head>
<body>
<?php
$a = 11;
while ( $a <= 19 )
{
echo "квадрат $a равен ".($a*$a)."<br>";
$a++;
}
?>
</body>
</html>
Замечание для продвинутых: сокращенная запись не сработает как ожидается:
{
echo \"квадрат $a равен \".($a*($a++)).\"<br>\"; // так не работает!!!
}
Альтернативный синтаксис оператора while:
echo "квадрат $a равен ".($a*$a)."<br>";
$a++;
endwhile;
Цикл do .. while отличается от цикла while лишь тем, что истинность условия проверяется не до, а после выполнения тела цикла.
Пример 9
<head>
<title>Цикл do .. while</title>
</head>
<body>
<?php
$a = 11;
do {
echo "квадрат $a равен ".($a*$a)."<br>";
$a++;
}
while ( $a <= 19 );
?>
</body>
</html>
В организации цикла могут участвовать еще два оператора: break (выход из цикла) и continue (переход на следующий шаг).
