В PHP, как и во всех языках программирования, существуют типы данных, которые необходимы для категоризации тех или иных данных. От используемого вами типа данных зависит, какие значения вы можете ему присваивать и что вообще вы можете с ним делать, какие операции вы можете с ним выполнять. Потому очень важно знать особенности каждого типа.
В этом мануале мы рассмотрим важные встроенные типы данных PHP. Это далеко не исчерпывающее исследование о данных PHP, но оно поможет вам разобраться с основами.
Один из способов понять типы данных в языке программирования — это рассмотреть различные типы данных, которые мы используем в реальном мире. К примеру, мы постоянно используем два типа — числа и слова. Конечно, они работают по-разному: если мы сложим 3 + 4, мы получим 7; объединим слова star и fish – получим starfish.
Смешивая данные разных типов (например, числа и слова) в рамках одной операции, вы не получите очевидного ответа:
'sky' + 8
Компьютеры четко различают типы данных, поэтому нам стоит быть осторожными, присваивая значения и выполняя те или иные операции с данными.
Работа с типами данных
PHP — это слабо типизированный язык. Это означает, что если значение не соответствует ожидаемому типу данных, PHP попытается изменить его так, чтобы оно соответствовало этому типу, если это возможно. Это называется жонглирование типами (type juggling). Допустим, у нас есть функция, которая ожидает строку, но вместо этого получает целое число 2 – в такой ситуации PHP изменит входящее числовое значение на строковое “2”.
В PHP можно (и рекомендуется) включать строгий режим, это можно сделать для каждого файла отдельно. Такой режим обеспечивает соблюдение типов данных в коде и позволяет использовать дополнительные пакеты кода, которые могут не соответствовать строгим типам данных. Строгий тип объявляется в начале файла:
<?php declare(strict_types=1); ...
В строгом режиме будет принято только то значение, которое точно соответствует объявлению типа; в противном случае вы получите TypeError. Единственное исключение из этого правила: значение int будет передавать объявление типа float.
Числа в PHP
Любое число, которое вы вводите в PHP, будет интерпретироваться как число. В этом случае вам не нужно дополнительно объявлять, какой тип данных вы вводите. PHP будет рассматривать любое число, записанное без десятичных знаков, как целое число (например, 138), а любое число с десятичными знаками – как число с плавающей точкой (например, 138,0).
Целые числа
Целые числа в программировании (как и в математике) — это числа без десятичного знака, которые могут быть положительными, отрицательными или равными 0 (…, -1, 0, 1, …). Целое число также записывается как int. Как и в других языках программирования, в PHP не нужно использовать запятые в четырехзначных и более числах: то есть чтобы представить число 1000 в коде, нужно написать просто 1000, а не 1,000.
Вывести целое число можно следующим образом:
echo -25;
Что выдаст:
-25
Также можно объявить переменную, и она будет символом числа, которое мы используем, например:
$my_int = -25;
echo $my_int;
И вы получите:
-25
С целыми числами можно выполнять математические операции:
$int_ans = 116 - 68;
echo $int_ans;
На экране появится результат:
48
Целые числа могут использоваться в программах PHP по-разному. Узнавая больше об этом языке, вы откроете много новых возможностей для работы с целыми числами.
Числа с плавающей точкой
Число с плавающей точкой (floating-point number или float) — это действительное число, то есть оно может быть как рациональным, так и иррациональным числом. По этой причине числа с плавающей точкой могут содержать дробную часть (например, 9.0 или -116.42). В программе PHP такие числа записываются с десятичной точкой.
Как и в случае с целыми числами, число с плавающей точкой можно вывести следующим образом:
echo 17.3;
И вы получите:
17.3
Аналогично, для числа с плавающей точкой можно объявить переменную:
$my_flt = 17.3;
echo $my_flt;
В результате будет:
17.3
Числа с плавающей точкой могут участвовать в математических операциях (что, опять же, действительно для целых чисел).
$flt_ans = 564.0 + 365.24;
echo $flt_ans;
929.24
При работе с целыми числами и числами с плавающей точкой важно помнить следующее: 3 не равно 3,0, потому что они относятся к разным типам данных. Это может повлиять на работу вашей программы.
Конечно, без чисел не обойтись в операциях по подсчету (к примеру, предметов или денег).
Строки в PHP
Читайте также: Как работают строки в PHP
Строка — это последовательность из одного или нескольких символов, которая может состоять из букв, цифр или других символов. Эта последовательность заключается в одинарные (”) или в двойные кавычки (“”).
echo 'This is a 47 character string in single quotes.'
echo "This is a 47 character string in double quotes."
Независимо от кавычек строки оцениваются одинаково:
This is a 47 character string in single quotes. This is a 47 character string in double quotes.
Вы можете использовать любые кавычки для определения строк. Однако помните, что вы должны быть последовательны. Не используйте разные варианты кавычек в рамках одной программы, иначе ваш код будет сложно читать.
Классическая программа «Hello, World!» продемонстрирует нам, как использовать строки в компьютерном программировании, ведь фраза «Hello, World!» является строкой:
echo "Hello, World!";
Как другие типы данных, строки можно хранить в переменных и выводить результат:
$hw = "Hello, World!"
echo $hw;
Hello, World!
Существует множество операций, которые мы можем выполнять со строками, чтобы управлять ими и получать желаемый результат. Строки помогают программе передать необходимую информацию пользователю и наоборот.
Логические значения
Логический, или булевой тип данных (boolean или bool) может принимать одно из двух значений: true или false. Булевы значения используются для представления значений истинности и тесно связаны с логической областью математики.
При объявлении логического значения кавычки не нужны. Запомните: всё, что находится в кавычках, считается строкой.
Кроме того, PHP не чувствителен к регистру при объявлении логического значения. Таким образом, True, TRUE, true и tRuE оцениваются абсолютно одинаково. Если вы следуете рекомендациям по стилю от PHP-FIG, вам следует записывать все значения строчными буквами (true или false).
Результаты многих операций в математике можно оценить как истинные или ложные:
- Больше чем
- 500 > 100 True
- 1 > 5 False
- Меньше чем
- 200 < 400 True
- 4 < 2 False
- Равно
- 5 = 5 True
- 500 = 400 False
Конечно, хранить логическое значение (как и другие типы) можно в переменной. Однако в отличие от чисел или строк, для вывода такого значения нельзя использовать echo, потому что логическое значение true преобразуется в строку “1”, а логическое значение false – в “” (в пустую строку). Это позволяет «жонглировать типами» для преобразования переменной между логическими и строковыми значениями. Есть несколько вариантов, которые позволяют вывести значение логического типа. Чтобы вывести тип вместе со значением переменной, используйте var_dump. Вывести строковое представление значения переменной можно с помощью var_export.
$my_bool = 4 > 3;
echo $my_bool;
var_dump($my_bool);
var_export($my_bool);
Поскольку 4 больше 3, мы получим такой вывод:
1 bool(true) true
Команда echo преобразует истинное логическое значение в строку со значением 1. var_dump выводит логический тип переменной bool вместе со значением true. var_export выводит строковое представление значения true.
Чем больше вы будете писать программ на PHP, тем лучше вы поймете, как работают булевы значения и как различные функции и операции, оценивающие значение True или False, могут изменить ход программы.
Массивы
Массив в PHP на самом деле является упорядоченной картой. Карта — это тип данных, который связывает значения с ключами. Этот тип имеет множество различных применений; его можно рассматривать как массив, список, хеш-таблицу, словарь, коллекцию и многое другое. Кроме того, в качестве значений массивы в PHP могут содержать другие массивы.
Индексированные массивы
В своей простейшей форме массив будет иметь числовой индекс или ключ. Если вы не укажете ключ, PHP автоматически сгенерирует для вас последующий числовой ключ. По умолчанию ключи массива индексируются с 0 (то есть первый ключ равен 0, а не 1). Значения внутри массива также называются элементами.
Массив можно определить одним из двух способов. Первый использует языковую конструкцию array(), в которой задается список элементов, разделенных запятыми. К примеру, массив целых чисел можно определить следующим образом:
array(-3, -2, -1, 0, 1, 2, 3)
Второй и более распространенный способ определения массива — это короткий синтаксис массива, который состоит из квадратных скобок []. Массив чисел с плавающей точкой можно определить следующим образом:
[3.14, 9.23, 111.11, 312.12, 1.05]
Мы также можем определить массив строк и присвоить его переменной, например:
$sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'];
Опять же, использовать команду echo для вывода всего массива нельзя. Но можно использовать var_export или var_dump:
var_export($sea_creatures);
var_dump($sea_creatures);
Вывод показывает, что массив использует числовые ключи:
array ( 0 => 'shark', 1 => 'cuttlefish', 2 => 'squid', 3 => 'mantis shrimp', ) array(4) { [0]=> string(5) "shark" [1]=> string(10) "cuttlefish" [2]=> string(5) "squid" [3]=> string(13) "mantis shrimp" }
Поскольку массив индексируется с 0, var_dump показывает массив с числовыми ключами от 0 до 3. Каждый числовой ключ соответствует строковому значению. Первый элемент имеет ключ 0 и значение shark. Функция var_dump дает нам более подробную информацию о массиве: в массиве 4 элемента, а значением первого элемента является строка длиной 5.
Числовой ключ индексированного массива можно указывать при установке значения. Однако чаще всего ключ указывается, если он именованный.
Ассоциативные массивы
Ассоциативные массивы — это массивы с именованными ключами. Обычно они используются для хранения связанных между собой данных. Вот как выглядит ассоциативный массив:
['name' => 'Willy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']
Обратите внимание на оператор =>, используемый для разделения строк. Слова слева от стрелки => являются ключами. Ключ может быть представлен либо целым числом, либо строкой. В данном массиве использованы ключи: ‘name’, ‘animal’, ‘color’, ‘location’.
Слова справа от => являются значениями. Значения могут быть представлены данными любого типа, включая другой массив. В предыдущем массиве есть такие значения: ‘Willy’, ‘shark’, ‘blue’, ‘ocean’.
Как и индексированный массив, ассоциативный массив можно хранить внутри переменной:
$Willy = ['name' => 'Willy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean'];
var_dump($Willy);
Результат опишет нам этот массив как содержащий 4 элемента. Также в выводе есть строка для каждого ключа, а значение указывает не только тип данных (string), а еще и количество символов:
array(4) { ["name"]=> string(5) "Willy" ["animal"]=> string(5) "shark" ["color"]=> string(4) "blue" ["location"]=> string(5) "ocean" }
Ассоциативные массивы позволяют нам более точно обращаться к одному элементу. Если мы хотим вывести только значение ключа color, после переменной массива мы можем добавить квадратные скобки, содержащие имя ключа:
echo $Willy['color'];
И получим результат:
blue
Поскольку для хранения данных массивы используют сопоставление ключ-значение, они могут стать важным компонентом вашей PHP-программы.
Константы в PHP
На самом деле константы не являются отдельным типом данных, однако они работают иначе, чем другие данные. Как следует из названия, константы — это переменные, которые объявляются один раз, после чего их нельзя изменить. Имя константы всегда должно быть записано в верхнем регистре и не должно начинаться со знака доллара. Константа может быть объявлена с помощью функции define или с помощью ключевого слова const:
define('MIN_VALUE', 1);
const MAX_VALUE = 10;
Функция define принимает два параметра: первый — это строка, содержащая имя константы, а второй — присваиваемое значение. Это значение может быть представлено любым типом данных. Ключевое слово const позволяет присвоить константе значение, используя единственный знак равенства. Константа может использоваться в вашем приложении так же, как и другие переменные, за исключением того, что она не будет интерпретироваться в строке с двойными кавычками:
echo "The value must be between MIN_VALUE and MAX_VALUE";
echo "The value must be between ".MIN_VALUE." and ".MAX_VALUE;
Поскольку константы не интерпретируются, вывод этих строк будет отличаться:
The value must be between MIN_VALUE and MAX_VALUE The value must be between 1 and 10
Заключение
Итак, мы рассмотрели некоторые из основных типов данных, доступных для использования в PHP. Каждый из этих типов данных важен при разработке проектов на языке PHP.