Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Автор: чайник, в новости:

Что такое API и для чего они нужны

Автор: HIshnik, в новости:

Классы в PHP для чайников

Автор: Аноним, в новости:

Написание простого вируса в блокноте

Автор: stream, в новости:

Создаем BB коды на PHP

Топ пользователей
Drunya
Репутация: 108
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
Что же такое эти типы данных? Дело в том, что любые данные имеют тип. Вот какие есть типы данных:
boolean - логические true и false
integer - целое число(сокращенно int)
string - строка
float - число с плавающей точкой
array - массив
object - объект
resourse - ссылка на ресурс(например после выполнения некоторых функций)


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

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

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

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

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

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

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

Например у нас есть число и мы хотим сделать его строкой.
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
<?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)

и т.д.

Вот вам и немного информации для размышления.
Автор: Drunya
Категория: PHP
Просмотров: 2020
Комментариев: 0

Сейчас online: 18. Зарегистрированных: 0. Гостей: 18.
-->