71.7892 ·  83.0816

 

ОСНОВЫ ЯЗЫКА PHP

Константы определяются в PHP-программе с помощью функции define( ).
Например:

define("PI", 3.1415927);

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

PHP имеет ряд предопределенных констант. Например:

  • _FILE_ содержит имя файла, который в данный момент читает PHP;
  • _LINE_ содержит номер строки этого файла.


Переменные

Имя любой переменной в PHP начинается со знака $. Имена переменных чувствительны к регистру символов.

Тип переменной не требуется задавать специально. Конкретный тип переменной устанавливается и меняется в ходе выполнения программы.

PHP поддерживает восемь типов данных:

  • логический (принимает значения true или false);
  • целое число;
  • вещественное число с плавающей точкой;
  • строка;
  • объект;
  • массив;
  • ресурс (специальный тип);
  • null (специальный тип).

Тип переменной можно проверить с помощью функции gettype().


Пример 1

<html>
<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

<html>
<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

<html>
<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

<html>
<head>
<title>Использование динамической переменной</title>
</head>
<body>
<?php
$t = "Всем"; // переменной t присваиваем значение "Всем"
$$t = "привет!"; // Переменной "Всем" присваиваем значение "привет!"
echo "$$t ".$$t."<br>";
echo "$t ${$t}<br>";
echo "$t $Всем";
?>
</body>
</html>

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



Пример 5

<html>
<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

<html>
<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. Первый тип - базовый условный оператор. Например:

if ($a > $b)
{
echo "А больше Б";
}

Альтернативный синтаксис оператора if: if ($a > $b):
echo "А больше Б";
endif;

Второй тип - условный оператор if-else. Например:

if ($a > $b)
{
echo "А больше Б";
}
else
{
echo "А не больше Б";
}

Альтернативный синтаксис оператора if-else:

if ($a > $b):
echo "А больше Б";
else:
echo "А не больше Б";
endif;

Третий тип - условный оператор if-elseif. Например:

if ($a > $b)
{
echo "А больше Б";
}
elseif ($a == $b)
{
echo "А равно Б";
}
else
{
echo "А меньше Б";
}

Альтернативный синтаксис оператора if-elseif:

if ($a > $b):
echo "А больше Б";
elseif ($a == $b):
echo "А равно Б";
else:
echo "А меньше Б";
endif;

Условный оператор ? возвращает одно из двух значений, разделенных двоеточием. Использование оператора ? может сделать более компактным текст программы. Например:

$text = ($a == $b) ? "А равно Б" : "А не равно Б";
echo $text;


Оператор выбора

Оператор выбора switch оценивает одно выражение и в зависимости от его значения выполняет один из нескольких блоков программы. Выражение в операторе switch чаще всего бывает простой переменной. Например:

switch ( $a )
{
case 1:
echo "А равно 1";
break;
case 2:
echo "А равно 2";
break;
case 3:
echo "А равно 3";
break;
default:
echo "А не равно ни 1, ни 2, ни 3";
}

Альтернативный синтаксис оператора switch:

switch ( $a ):
case 1:
echo "А равно 1";
break;
case 2:
echo "А равно 2";
break;
case 3:
echo "А равно 3";
break;
default:
echo "А не равно ни 1, ни 2, ни 3";
endswitch;


Цикл с параметром

Цикл с параметром for относится к наиболее старому и заслуженному виду цикла.



Пример 7

<html>
<head>
<title>Цикл for</title>
</head>
<body>
<?php
for ($a = 11; $a <= 19; $a++)
{
echo "квадрат $a равен ".($a*$a)."<br>";
}
?>
</body>
</html>

Альтернативный синтаксис оператора for:

for ($a = 11; $a <= 19; $a++):
echo "квадрат $a равен ".($a*$a)."<br>";
endfor;

Циклы с условием

В языке PHP сущеcтвует два типа цикла с условием:

  • while - цикл с предусловием;
  • do .. while - цикл с постусловием.

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



Пример 8

<html>
<head>
<title>Цикл while</title>
</head>
<body>
<?php
$a = 11;
while ( $a <= 19 )
{
echo "квадрат $a равен ".($a*$a)."<br>";
$a++;
}
?>
</body>
</html>

Замечание для продвинутых: сокращенная запись не сработает как ожидается:

while ( $a <= 19 )
{
echo \"квадрат $a равен \".($a*($a++)).\"<br>\"; // так не работает!!!
}

Альтернативный синтаксис оператора while: while ( $a <= 19 ):
echo "квадрат $a равен ".($a*$a)."<br>";
$a++;
endwhile;

Цикл do .. while отличается от цикла while лишь тем, что истинность условия проверяется не до, а после выполнения тела цикла.



Пример 9

<html>
<head>
<title>Цикл do .. while</title>
</head>
<body>
<?php
$a = 11;
do {
echo "квадрат $a равен ".($a*$a)."<br>";
$a++;
}
while ( $a <= 19 );
?>
</body>
</html>

В организации цикла могут участвовать еще два оператора: break (выход из цикла) и continue (переход на следующий шаг).

 Up!