PHP

Типы данных в PHP

Что же такое эти типы данных? Дело в том, что любые данные имеют тип. Вот какие есть типы данных:

boolean - логические true и false
integer - целое число(сокращенно int)
string - строка
float - число с плавающей точкой
array - массив
object - объект
resourse - ссылка на ресурс(например после выполнения некоторых функций)

Дело в том, что в PHP работа с типами данных имеет свои особенности. Например этот код хорошо это иллюстрирует
<?php $a = 1; 
$b = 2; 
$c = true; 
if ($a == $c) echo 'да'; 
if ($b == $c) echo 'да'; 
if ($a == $b) echo 'нет';?>

Хотя, казалось бы, что если первые два сравнения истины то и последнее тоже должно быть истинно. Дело в том, что мы сравнивали эти данные через 2 "=", а это означает сравнение без учета типов. В таком случае, любая строка истина, как и любое число больше нуля.

Для жесткого сравнения с учетом типов надо использовать 3 "=". Из-за такой не жесткой типизации в PHP бывают косяки в софте. Сейчас я покажу пример из жизни
<?php if ('asdasd' == 0) echo 'true';?>

Этот код выведет "true". Такие баги потом очень трудно отследить. Дело в том, что строка в этом сравнении преобразуется в число и становится нулем. Для корректной работы такого сравнения нужно использовать 3 "=".
<?php if ('asdasd' === 0) echo 'true';?>

В таком сравнении PHP не выведет ничего, так как условие вернет false.

Как преобразовывать данные?
Если взять предыдущий пример, то можно исправить его по другому, указав типы в условии. Например так
<?php if ((string)'asdasd' == 0) echo 'true';?>

В таком случае условие тоже вернет FALSE.

Например у нас есть число и мы хотим сделать его строкой.
<?php $a = 1; //сейчас это числло 
$b = '1'; //  а это строка, так как она в ковычках 

if ($a == $b) //true 
if ($a === $b) //false 

$b = (int)$b; // теперь $b это число 
if ($a == $b) //true 
if ($a === $b) //true?>

Как видите, я использовал (int) для преобразования в целое число. Кроме этой конструкции есть и другие:

(string)
(int)
(array)
(float)
и т.д.

Вот вам и немного информации для размышления.
Теги:
Типы данных
Добавлено: 29 Мая 2018 21:07:52 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...