Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Типы данных

У каждого значения в PHP есть тип: число, строка, логическое значение и так далее. Тип определяется автоматически по самому значению, а переменная может в разное время хранить значения разных типов.

Основные типы

ТипПримерОписание
string'текст'Строка
int42Целое число
float3.14Дробное число
booltrueИстина или ложь
array[1, 2, 3]Набор значений
nullnullОтсутствие значения

Как узнать тип

Функция var_dump() выводит тип и значение. Она незаменима при отладке, когда нужно понять, что на самом деле лежит в переменной:

<?php
 
var_dump('текст'); // string(10) "текст"
var_dump(42);      // int(42)
var_dump(3.14);    // float(3.14)
var_dump(true);    // bool(true)

Число в скобках у строки — её длина в байтах. В кодировке UTF-8 кириллическая буква занимает два байта, поэтому у слова из пяти букв длина 10.

Целые и дробные числа

Деление всегда даёт дробный результат, если числа не делятся нацело. Для целочисленного деления есть функция intdiv():

<?php
 
var_dump(10 / 4);        // float(2.5)
var_dump(intdiv(10, 4)); // int(2)

Дробные числа хранятся приближённо, поэтому сравнивать их на точное равенство нельзя:

<?php
 
var_dump(0.1 + 0.2 == 0.3); // bool(false)

Это особенность почти всех языков программирования, а не ошибка PHP.

Приведение типов

Тип можно изменить явно, указав нужный в скобках перед значением:

<?php
 
var_dump((int) '42');    // int(42)
var_dump((int) '12abc'); // int(12)
var_dump((string) 3.14); // string(4) "3.14"
var_dump((bool) '');     // bool(false)

При преобразовании в bool ложью считаются 0, 0.0, пустая строка, строка '0', пустой массив и null. Всё остальное — истина.

Строгое и нестрогое сравнение

Оператор == перед сравнением приводит значения к одному типу, а === сравнивает и значение, и тип:

<?php
 
var_dump('5' == 5);  // bool(true)
var_dump('5' === 5); // bool(false)

Нестрогое сравнение часто даёт неожиданные результаты, поэтому по умолчанию используйте ===.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.