Типы данных в PHP
Что такое типы данных
Каждая переменная и каждое значение в PHP имеет свой тип данных:
Типы данных в PHP
В PHP существуют следующие основные типы данных:
Строка
Строки в PHP размещаются в одинарных или двойных кавычках. Главное различие в том, что в двойные кавычки можно подставить значение переменной, например:
Другие различия будут рассмотрены в отдельном уроке.
Для PHP 7+ 64-битных сборок нет ограничений на максимальную длину строки, для остальных она составляет 2Гб.
Булев тип
Значение булева типа может содержать в себе только true или false (истина или ложь).
Булев тип удобно использовать для всяких флажков и статусов вроде отправлено/не отправлено, просмотрено/не просмотрено и т.д.
Целое число
Целые числа имеют следующие минимальные и максимальные значения:
Помимо десятичной системы счисления, PHP также поддерживает двоичную, восьмеричную и шестнадцатеричную:
Дробное число
Разделителем дробной части в PHP является точка:
С дробными числами существует проблема, характерная не только для PHP, но и для любых других языков, где используется двоичное представление чисел с плавающей точкой.
Проблема в том, что дробные числа имеют ограниченную точность, что в некоторых ситуациях может приводить к неожиданным результатам:
Оператор сравнения == возвращает true или false если два значения соответственно равны или не равны.
Поэтому когда нужно производить какие-то вычисления, где важна абсолютная точность, нужно использовать специальные функции произвольной точности:
Массив
Массивы будут подробно рассмотрены в уроке Массивы в PHP.
Объект
Объекты будут подробно рассмотрены в будущем.
Ресурс
В примере выше функция fopen возвращает ссылку на файл, которую затем можно использовать вместе с другими функциями для управления файлом.
NULL означает отсутствие значения:
Как определить тип переменной
Получить тип переменной можно с помощью функции gettype() :
Php как узнать тип
PHP поддерживает восемь простых типов данных (переменных):
Существуют также несколько :
Рассмотрим кратко перечисленные типы данных PHP.
Тип Boolean (двоичные данные)
Чтобы определить булев тип, используйте ключевое слово TRUE или FALSE. Оба регистро-независимы.
Обычно вы используете некий оператор, который возвращает логическое выражение, а затем предает его управляющей конструкции.
Подробнее о булевых типах данных смотрите здесь.
Тип integer (целые числа)
Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком (- или +).
Подробнее о типах данных смотрите здесь.
Тип float (числа с плавающей точкой)
Числа с плавающей точкой (они же числа двойной точности или действительные числа) могут быть определены при помощи любого из следующих синтаксисов:
Подробнее о типах данных смотрите здесь.
Тип string (строки)
Строка легко может быть обработана при помощи стандартных функций, можно также непосредственно обратиться к любому ее символу.
Пример строковой переменной:
Подробнее о типах данных смотрите здесь.
Тип array (массивы)
Индекс (ключ) служит для однозначной идентификации элемента внутри массива. В одном массиве не может быть двух элементов с одинаковыми индексами.
PHP позволяет создавать массивы любой сложности. Рассмотрим некоторые примеры:
Простой массив (список)
Ассоциативные массивы
В PHP индексом массива может быть не только число, но и строка. Причем на строку не накладываются ограничения: она может содержать пробелы, специальные символы и быть любой длины.
Массивы, индексами которых являются строки, называются ассоциативными массивами. Индексы ассоциативных массивов называются ключами. Пример ассоциативного массива:
Многомерные массивы
Многомерные массивы похожи на записи в языке Pascal или структуры в языке C.
Подробно о массивах и операциях с массивами вы можете узнать здесь
Тип object (объекты)
Объект является одним из базовых понятий объектно-ориентированного программирования. Внутренняя структура объекта похожа на хэш, за исключением того, что для доступа к отдельным элементам и функциям используется оператор ->, а не квадратные скобки.
class foo
<
function do_foo ()
<
echo «Doing foo.» ;
>
>
Подробное рассмотрение объектов производится в разделе PHP и ООП
Тип resource (ресурсы)
Тип NULL («пустой» тип)
Переменная считается NULL если:
ей была присвоена константа NULL;
ей еще не было присвоено какое-либо значение;
она была удалена с помощью unset().
Псевдотип mixed (смешанный)
mixed говорит о том, что параметр может принимать множество (но не обязательно все) типов.
gettype(), например, принимает все типы PHP, тогда как str_replace() принимает строки и массивы.
Псевдотип number (числовой)
number говорит о том, что параметр может быть либо integer, либо float.
Псевдотип callback (обратного вызова)
Некоторые функции, такие как call_user_func() или usort() принимают в качестве параметра определенные пользователем callback-функции. Callback-функции могут быть не только простыми функциями, но также методами объектов, включая статические методы классов.
PHP-функция передается просто как строка ее имени. Вы можете передать любую встроенную или определенную пользователем функцию за исключением array(), echo(), empty(), eval(), exit(), isset(), list(), print() и unset().
Приведем примеры callback функций:
// простой пример callback
function my_callback_function () <
echo ‘hello world!’ ;
>
call_user_func ( ‘my_callback_function’ );
// примеры callback-метода
class MyClass <
function myCallbackMethod () <
echo ‘Hello World!’ ;
>
>
Мы рассмотрели достаточно поверхностно типы данных PHP. Для более подробного ознакомления с этим вопросом посетите подраздел «Типы данных PHP».
Php как узнать тип
Оператор instanceof используется для определения того, является ли текущий объект экземпляром указанного класса.
Пример #1 Использование instanceof с классами
class NotMyClass
<
>
$a = new MyClass ;
Результат выполнения данного примера:
Оператор instanceof также может быть использован для определения, наследует ли определённый объект какой-либо класс:
Пример #2 Использование instanceof с наследуемыми классами
class MyClass extends ParentClass
<
>
Результат выполнения данного примера:
Пример #3 Использование instanceof для проверки того, что объект не является экземпляром класса
Результат выполнения данного примера:
Наконец, instanceof может быть также использован для проверки реализации объектом некоторого интерфейса:
Пример #4 Использование instanceof с интерфейсами
class MyClass implements MyInterface
<
>
Результат выполнения данного примера:
Хотя instanceof обычно используется с прямо указанным именем класса, он также может быть использован с другим объектом или строковой переменной:
Пример #5 Использование instanceof с другими переменными
class MyClass implements MyInterface
<
>
$a = new MyClass ;
$b = new MyClass ;
$c = ‘MyClass’ ;
$d = ‘NotMyClass’ ;
Результат выполнения данного примера:
Пример #6 Пример использования оператора instanceof для проверки других переменных
Результат выполнения данного примера:
Пример #7 Использование instanceof для проверки констант
Результат выполнения данного примера в PHP 7.3:
Смотрите также
User Contributed Notes 23 notes
Checking an object is not an instance of a class, example #3 uses extraneous parentheses.
You are also able to compare 2 objects using instanceOf. In that case, instanceOf will compare the types of both objects. That is sometimes very useful:
$a = new A ;
$b = new B ;
$a2 = new A ;
I don’t see any mention of «namespaces» on this page so I thought I would chime in. The instanceof operator takes FQCN as second operator when you pass it as string and not a simple class name. It will not resolve it even if you have a `use MyNamespace\Bar;` at the top level. Here is what I am trying to say:
You can use «self» to reference to the current class:
If you want to test if a classname is an instance of a class, the instanceof operator won’t work.
Response to vinyanov at poczta dot onet dot pl:
You mentionned «the instanceof operator will not accept a string as its first operand». However, this behavior is absolutely right and therefore, you’re misleading the meaning of an instance.
I believe asking if «a ClassA belongs to a ClassB» (or «a ClassA is a class of (type) ClassB») or even «a ClassA is (also) a ClassB» is more appropriate. But the first is not implemented and the second only works with objects, just like the instanceof operator.
Finally, here is a fast (to me) sample function code to verify if an object or class:
The first parameter must be an object instance.
example:
class A <>
class B extends A <>
var_dump ( A ::class instanceof B ); // false
var_dump ( B ::class instanceof A ); // false
var_dump (new B () instanceof A ); // true
You will have to do:
Example #5 could also be extended to include.
var_dump($a instanceof MyInterface);
The new result would be
The PHP parser generates a parse error on either of the two lines that are commented out here.
Apparently the ‘instanceof’ construct will take a string variable in the second spot, but it will NOT take a string. lame
SIMPLE, CLEAN, CLEAR use of the instanceof OPERATOR
?>
Now instantiate a few instances of these types. Note, I will put them in an array (collection) so we can iterate through them quickly.
?>
$myCollection[0] = 123
$myCollection[1] = abc
$myCollection[2] = Hello World!
$myCollection[3] = Circle [radius=3]
$myCollection[4] = Circle [radius=4]
$myCollection[5] = Circle [radius=5]
$myCollection[6] = Point [x=6, y=6]
$myCollection[7] = Point [x=7, y=7]
$myCollection[8] = Point [x=8, y=8]
?>
Consider it an alternative to «get_class($bar) == get_class($foo)» that avoids the detour through to string lookups and comparisons.
if you have only class names (not objects) you can use that snippet: https://3v4l.org/mUKUC
interface i <>
class a implements i <>
var_dump ( a ::class instanceof i ); // false
var_dump ( in_array ( i ::class, class_implements ( a ::class), true )); // true
Using an undefined variable will result in an error.
If variable is in doubt, one must prequalify:
Cross version function even if you are working in php4
(instanceof is an undefined operator for php4)
instanceof is a binary operator, and so used in binary terms like this
terma instanceof termb
And a term never consists of an operator, only! There is no such construct in any language (please correct me!). However, instanceof doesn’t finally support nested terms in every operand position («terma» or «termb» above) as negation does:
Типы данных в PHP
Строка текста, целое число или число с дробной частью – всё это разные типы данных.
Раличные типы данных занимают различный объём памяти и обработка разных типов выполняется по разному. Поэтому некоторые языки программирования требуют от программиста, чтобы он заранее объявил, для какого типа данных предназначена та или иная переменная.
PHP не имеет таких строгих требований по типам данных, то есть он будет обрабатывать переменную в зависимости от того, какого типа значение в неё записано. Такой подход имеет как достоинства, так и недостатки. С одной стороны, программист может использовать переменные гибко, храня в них данные, необходимые в настоящий момент. Но, с другой стороны, такая свобода действия может привести к появлению ошибок, которые трудно обнаружить, особенно в больших программах, когда в переменной записано совсем не то, что ожидает найти там программист.
В таблице перечисленны типы данных, поддерживаемые PHP.
Как узнать тип данных в PHP
В следующем примере показано, как с помощью функции gettype() проверяется тип одной и той же переменной, которой всякий раз присваивают новое значение.
Ксати, узнать тип переменной можно также при помощи var_dump, она используется чаще при написании реальных проектов, а именно для поиска ошибок, так как предоставляет больше данных о массивах и объектах. Но на этапе изучения программирования чтобы освоить типы данных в PHP функция gettype() вполне подойдёт.
Немного подробнее про типы данных в PHP
Тип integer
Тип double
Размер числа с плавающей точкой double зависит от платформы, на которой работает PHP. Максимально возможное значение, как правило, составляет
1.8e308 с точностью около 14 десятичных цифр. Но, опять же, на моей практике такие точные вычесления не производятся.
Тип string (строки)
Давайте рассмотрим пример, как работают с переменными строки в разных кавычках:
Строка обрамлённая двойными кавычками может содержать в себе двойные кавычки, которые нужно вывести в браузер. В этом случае перед ними ставят символ » \ «. Например:
На самом деле, работа со строками в PHP – отдельная большая тема.
Тип boolean
В этом примере я использовал функцию var_dump, о которой упоминал ранее. Также функции gettype я передал не переменную, а выражение, так можно делать.
Логические выражения, что есть истина и ложь в PHP – самом деле тема отдальной статьи. Если вы хотите освоить программирование на PHP, то вы обязательно должны хорошо знать этот тип данных.
Тип NULL
Тип NULL указывает, что переменная не инициализирована. Давайте попробуем вывести на экран тип переменной, которой не было присвоено значение.
Остальные типы данных в PHP
Остальные типы данных: массивы в PHP, объекты в PHP и ресурсы требуют отдельного углублённого изучения.
Блог php кодера
Шпаргалка для начинающих php програмеров
Небольшая шпаргалка для начинающих, которая лежала раньше на другом моём сайте.
php Как узнать имя исполняемого файла?
Имя исполняемого файла вместе с путем до него от корневого каталога вернет константа __FILE__
php Как узнать домен сервера?
php Как узнать ip сервера?
php Как узнать размер файла?
Размер файл можно узнать с помощью функции filesize()
php Как узнать тип переменной?
Строковое представление типа переменной возвращает функция gettype()
php Как узнать браузер пользователя?
php Как узнать текущее время?
Узнать текущее время из php можно так
php Как узнать путь до текущего исполняемого файла?
Путь до текущего исполняемого файла хранится в константе __DIR__
php Как узнать текущую дату?
Одной из основных функций для работы с датами в php является date() необходимым параметром для которой является строка форматирования. По умолчанию date() возвращает текущие дату и время, если не задан второй парамерт timestamp.
php Как узнать адрес(url) текущей страницы?
php Как узнать версию php?
Версию php можно узнать с помошью команды
Или из константы PHP_VERSION
php Как узнать ip?
php Как узнать ASCII код символа?
ASCII код символа можно узнать с помощью функции ord()
php Как узнать символ по ASCII коду?
Узнать символ по ASCII коду можно с помощью функции chr()
php Как узнать цвет пикселя на картинке?
В php цвет пикселя узнать можно с помощью связки функций imagecolorat() и imagecolorsforindex()



