PHP: Основы языка
Введение
PHP (PHP: Hypertext Preprocessor) - это серверный язык программирования с открытым исходным кодом, специально разработанный для веб-разработки.
Основные характеристики:
Интерпретируемый язык - код выполняется построчно
Серверный язык - выполняется на веб-сервере
Кроссплатформенный - работает на Windows, Linux, macOS
Интегрируется с HTML - PHP код может быть встроен в HTML
Синтаксис
Структура файла
<?php
// PHP код начинается с открывающего тега
echo "Hello World!";
// Все инструкции заканчиваются точкой с запятой
$variable = "value";
?>
<!-- Можно смешивать PHP и HTML -->
<html>
<body>
<?php echo "Текущая дата: " . date('Y-m-d'); ?>
</body>
</html>
<?php
// Однострочный комментарий
/*
Многострочный комментарий
Может занимать несколько строк
*/
# Альтернативный стиль однострочного комментария
/**
* DocBlock комментарий
* Используется для документации
* @param string $name Имя пользователя
* @return string
*/
Переменные и типы данных
Объявление переменных
<?php
// Переменные начинаются со знака доллара $
$name = "Иван";
$age = 25;
$height = 1.75;
$is_active = true;
$skills = array("PHP", "MySQL", "JavaScript");
// Динамическая типизация
$variable = "строка"; // string
$variable = 42; // теперь integer
$variable = 3.14; // теперь float
Основные типы данных
Скалярные типы:
<?php
// String (Строки)
$string1 = "Hello World";
$string2 = 'Single quotes';
$string3 = "Переменная: $string1"; // интерполяция
// Integer (Целые числа)
$int1 = 123;
$int2 = -456;
$int3 = 0123; // восьмеричное
$int4 = 0x1A; // шестнадцатеричное
// Float (Дробные числа)
$float1 = 1.234;
$float2 = 1.2e3; // 1200
$float3 = 7E-10; // 0.0000000007
// Boolean (Логические значения)
$bool1 = true;
$bool2 = false;
Составные типы:
<?php
// Array (Массивы)
$array1 = array(1, 2, 3);
$array2 = [1, 2, 3]; // короткий синтаксис
$assoc_array = [
"name" => "John",
"age" => 30,
"city" => "Moscow"
];
// Object (Объекты)
class User {
public $name;
public function getName() {
return $this->name;
}
}
$user = new User();
Специальные типы:
<?php
// NULL
$var = null;
// Resource (Ресурсы)
$file = fopen("test.txt", "r"); // ресурс файла
$connection = mysqli_connect(); // ресурс соединения с БД
Операторы в PHP
Арифметические операторы
<?php
$a = 10;
$b = 3;
echo $a + $b; // 13 - сложение
echo $a - $b; // 7 - вычитание
echo $a * $b; // 30 - умножение
echo $a / $b; // 3.333... - деление
echo $a % $b; // 1 - остаток от деления
echo $a ** $b; // 1000 - возведение в степень
// Инкремент и декремент
$c = 5;
echo ++$c; // 6 (префиксный инкремент)
echo $c++; // 6 (постфиксный инкремент)
echo --$c; // 6 (префиксный декремент)
echo $c--; // 6 (постфиксный декремент)
Операторы сравнения
<?php
$a = 5;
$b = "5";
$c = 10;
var_dump($a == $b); // bool(true) - равно по значению
var_dump($a === $b); // bool(false) - идентично (значение и тип)
var_dump($a != $b); // bool(false) - не равно
var_dump($a !== $b); // bool(true) - не идентично
var_dump($a < $c); // bool(true) - меньше
var_dump($a > $c); // bool(false) - больше
var_dump($a <= $c); // bool(true) - меньше или равно
var_dump($a >= $c); // bool(false) - больше или равно
Логические операторы
<?php
$condition1 = true;
$condition2 = false;
var_dump($condition1 && $condition2); // bool(false) - И
var_dump($condition1 || $condition2); // bool(true) - ИЛИ
var_dump(!$condition1); // bool(false) - НЕ
var_dump($condition1 and $condition2); // bool(false) - И (низкий приоритет)
var_dump($condition1 or $condition2); // bool(true) - ИЛИ (низкий приоритет)
var_dump($condition1 xor $condition2); // bool(true) - исключающее ИЛИ
Строковые операторы
<?php
$str1 = "Hello";
$str2 = "World";
// Конкатенация
$result = $str1 . " " . $str2; // "Hello World"
// Конкатенация с присваиванием
$str1 .= " PHP"; // $str1 теперь "Hello PHP"
Условные конструкции
Оператор if-elseif-else
<?php
$age = 20;
$has_license = true;
if ($age < 18) {
echo "Вы несовершеннолетний";
} elseif ($age >= 18 && $age < 65) {
if ($has_license) {
echo "Вы можете водить автомобиль";
} else {
echo "Вам нужно получить права";
}
} else {
echo "Вы пенсионер";
}
Тернарный оператор
<?php
$age = 20;
$status = ($age >= 18) ? "совершеннолетний" : "несовершеннолетний";
// Сокращенная форма
$name = $_GET['name'] ?? 'Гость'; // Если не установлено, то 'Гость'
Оператор switch
<?php
$day = "monday";
switch ($day) {
case "monday":
echo "Начало рабочей недели";
break;
case "friday":
echo "Конец рабочей недели";
break;
case "saturday":
case "sunday":
echo "Выходные дни";
break;
default:
echo "Обычный рабочий день";
break;
}
Циклы
Цикл for
<?php
// Базовый for цикл
for ($i = 0; $i < 5; $i++) {
echo "Итерация: $i<br>";
}
// For с несколькими переменными
for ($i = 0, $j = 10; $i < 10; $i++, $j--) {
echo "i: $i, j: $j<br>";
}
// Бесконечный цикл (с условием выхода)
for ($i = 0; ; $i++) {
if ($i > 10) {
break;
}
echo $i . " ";
}
Цикл foreach
<?php
// Для индексированных массивов
$fruits = ["apple", "banana", "orange"];
foreach ($fruits as $fruit) {
echo $fruit . " ";
}
// Результат: apple banana orange
// Для ассоциативных массивов
$user = [
"name" => "John",
"age" => 30,
"city" => "Moscow"
];
foreach ($user as $key => $value) {
echo "$key: $value<br>";
}
// Ссылочная переменная (изменение исходного массива)
$numbers = [1, 2, 3];
foreach ($numbers as &$number) {
$number *= 2;
}
// $numbers теперь [2, 4, 6]
Цикл while
<?php
// While - проверка условия перед выполнением
$count = 0;
while ($count < 5) {
echo "Счетчик: $count<br>";
$count++;
}
// While с массивом
$fruits = ["apple", "banana", "orange"];
while ($fruit = array_shift($fruits)) {
echo "Фрукт: $fruit<br>";
}
Цикл do-while
<?php
// Do-while - выполнение перед проверкой условия
$count = 0;
do {
echo "Счетчик: $count<br>";
$count++;
} while ($count < 5);
// Гарантированное выполнение хотя бы один раз
$attempts = 0;
do {
$attempts++;
echo "Попытка: $attempts<br>";
} while (false); // выполнится один раз, несмотря на false
Функции работы с массивами
Создание и модификация массивов
<?php
// Создание массива
$array = array(1, 2, 3);
$short = [1, 2, 3]; // короткий синтаксис
// Добавление элементов
$array[] = 4; // [1, 2, 3, 4]
array_push($array, 5, 6); // [1, 2, 3, 4, 5, 6]
// Удаление элементов
$last = array_pop($array); // удаляет последний элемент
$first = array_shift($array); // удаляет первый элемент
Поиск и фильтрация массивов
<?php
$numbers = [1, 2, 3, 4, 5];
// Поиск в массиве
$key = array_search(3, $numbers); // возвращает ключ 2
$exists = in_array(3, $numbers); // возвращает true
// Фильтрация
$even = array_filter($numbers, function($n) {
return $n % 2 == 0;
}); // [2, 4]
// Преобразование
$squared = array_map(function($n) {
return $n * $n;
}, $numbers); // [1, 4, 9, 16, 25]
Сортировка массивов
<?php
$numbers = [3, 1, 4, 1, 5, 9, 2];
$fruits = ["banana", "apple", "orange"];
// Сортировка
sort($numbers); // [1, 1, 2, 3, 4, 5, 9]
rsort($fruits); // ["orange", "banana", "apple"]
// Ассоциативная сортировка
$ages = ["John" => 25, "Jane" => 30, "Bob" => 20];
asort($ages); // сортировка по значениям
ksort($ages); // сортировка по ключам
25 ноября 2025