Первая программа на PHP и типы данных
Типы данных в PHP 8: целые числа, float, строки, булевы значения, null, приведение типов и функция var_dump для отладки.
Тип данных определяет, какие значения может хранить переменная и какие операции над ней доступны. PHP — динамически типизированный язык: тип переменной определяется автоматически по присвоенному значению.
Первая программа на PHP
Традиция программирования: первая программа выводит «Hello, World!». В PHP это одна строка:
<?php
echo "Hello, World!";
Вывод:
Hello, World!
Тег <?php открывает PHP-блок. Команда echo выводит значение. Каждая инструкция заканчивается точкой с запятой ; — без неё будет ошибка синтаксиса.
Целые числа (int)
Целые числа без дробной части: положительные, отрицательные и ноль.
<?php
$year = 2024;
$temperature = -15;
$zero = 0;
echo $year; // Вывод: 2024
echo $temperature; // Вывод: -15
PHP поддерживает и другие системы счисления: 0b1010 (двоичная), 0755 (восьмеричная), 0xFF (шестнадцатеричная). Для читаемости больших чисел можно использовать символ подчёркивания: $population = 8_000_000_000;
Дробные числа (float)
Числа с плавающей точкой хранят дробную часть. В PHP используется точка, а не запятая:
<?php
$pi = 3.14159;
$price = 1_299.99;
$tiny = 1.5e-3; // научная запись: 0.0015
var_dump($pi); // Вывод: float(3.14159)
var_dump($price); // Вывод: float(1299.99)
Не используйте float для финансовых расчётов — возникают ошибки округления. Для денег используйте целые числа (копейки/центы) или расширение BCMath.
Строки (string)
Строки хранят текст. Одинарные кавычки — всё буквально, двойные — раскрывают переменные и спецсимволы:
<?php
$lang = "PHP";
echo "Изучаем $lang"; // Вывод: Изучаем PHP
echo 'Изучаем $lang'; // Вывод: Изучаем $lang
echo "Строка 1\nСтрока 2"; // \n — перевод строки
Булевы значения (bool)
Булевы значения хранят только true или false — результат логических проверок:
<?php
$isActive = true;
$isDeleted = false;
var_dump($isActive); // Вывод: bool(true)
var_dump(10 > 5); // Вывод: bool(true)
var_dump(10 === "10"); // Вывод: bool(false) — строгое сравнение
Операторы сравнения == (нестрогое) и === (строгое, тип + значение) дают разные результаты:
<?php
var_dump(0 == "abc"); // Вывод: bool(false) в PHP 8 (было true в PHP 7!)
var_dump(0 === 0.0); // Вывод: bool(false) — int vs float
null
null — специальное значение «ничего нет». Переменная, которую объявили, но не инициализировали, равна null:
<?php
$result = null;
var_dump($result); // Вывод: NULL
var_dump(isset($result)); // Вывод: bool(false) — isset возвращает false для null
Приведение типов
PHP автоматически преобразует типы при необходимости. Но иногда лучше сделать это явно:
<?php
$str = "42 попугая";
$num = (int) $str; // явное приведение к int
echo $num; // Вывод: 42
$price = "19.99";
echo (float) $price * 2; // Вывод: 39.98
echo (bool) ""; // Вывод: (пусто — false)
echo (bool) "0"; // Вывод: (пусто — false)
echo (bool) "false"; // Вывод: 1 — непустая строка — true!
Ловушка: строка
"false"при приведении к bool даётtrue, потому что она непустая. Используйте строгое сравнение===, чтобы избежать сюрпризов.
Сводная таблица типов
| Тип | Пример | var_dump |
|---|---|---|
| int | $n = 42; | int(42) |
| float | $f = 3.14; | float(3.14) |
| string | $s = "php"; | string(3) "php" |
| bool | $b = true; | bool(true) |
| null | $x = null; | NULL |
| array | $a = [1, 2]; | array(2) {...} |
Коротко
- PHP определяет тип автоматически —
$x = 5даёт int,$x = 5.0— float. var_dump()показывает тип и значение — главный инструмент отладки.- Строгое сравнение
===проверяет и тип, и значение; используйте его по умолчанию. - В PHP 8 изменилось поведение
==при сравнении 0 со строками — учитывайте это при работе с устаревшим кодом. - Для явного приведения используйте
(int),(float),(string),(bool).
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.