Первая программа на 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).
Проверьте себя
1. Что выведет var_dump(0 === "0")?
Abool(true)
Bbool(false)
Cint(0)
Dstring(1) "0"
2. Что вернёт (bool) "false"?
Afalse
Btrue
Cnull
DОшибку
3. Какая функция показывает и тип, и значение переменной?
Agettype()
Bprint_r()
Cecho
Dvar_dump()
4. Какой тип использовать для хранения точных финансовых сумм?
Afloat
Bint (хранить копейки/центы)
Cdouble
Dstring

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.