Блог веб разработки

Блог веб-разработки статьи | видеообзоры | исходный код

PHP типы данных

Всем привет и давайте разбираться для чего нужно вообще приводить данные к определенному типу и обрабатывать специальными функциями.

Ну во первых чтобы минимизировать в программе вероятность возникновения ошибок, так как в php нет строгой типизации переменных.

А во вторых как мы знаем , все данные ввода которые приходят от пользователя нужно обязательно проверять и обрабатывать, только так мы можем уберечь себя от взлома.

Давайте сначала рассмотрим основные , самые используемые типы php:

boolean - булевое значение(true или false)

Integer - целое цисло(10)

float - число с плавающей точкой(5.5)

string - строка("Привет мир!")

array - массив(['a','b'])

object - объект () ({ ["scalar"]=> string(12) "Привет" })

resourse - ссылка на внешний ресурс( не требует приведения)

null - значение не определено( не требует приведения)

И так давайте непосредственно разберем приведение данных к определенным типам, пойдем по порядку:

Для того чтобы привести данные к булевому значению (boolean) можно воспользоваться функцией (boolean) пример:

$str_empty = (boolean)"";
echo $str_empty ;
$str = (boolean)'str';
echo $str ;

тут как видите мы пытаемся привести нашу строку к булевому значению, если строка пустая , то нам ничего не возвращается в php это означает false. Если же строка содержит какие либо символы , то вернется 1 true. Это значит что данная функция после приведения возвращает только два значения пустую строку(false) или единицу(true).

Да кстати для того чтобы проверить тип данных в php существует функция gettype:

$str = (boolean)'str';
echo gettype($str) ;

как видите нам вернулся наш тип boolean.

Едем дальше и теперь для того чтобы данные привести к целому числу используется функция (int) пример:

$number = (int)'10cd';
echo $number;
echo "<br/>";
$number2 = (int)'sdcds';
echo $number2;
echo "<br/>";
echo gettype($number) ;

здесь у нас в первом выводе строка 10cd была преобразована в целое число 10, отмечу что число должно быть в начале строки иначе нам вернется 0, во втором случае 'sdcds' нам вернулось 0, так как признаков числа в строке обнаружено не было. Итог если при обработке функцией (int) данные невозможно представить в виде числа , то данная функция вернет нам 0. Повторюсь что признаки числа должны быть в самом начале.

Рассмотрим похожий тип данных, но уже это число с плавающей точкой(float):

$number = (float)'10cc2d';
echo $number;
echo "<br/>";
$number2 = (int)'sdcds';
echo $number2;
echo "<br/>";
echo gettype($number) ;

если присмотреться , то у нас получился такой же результат как и при работе с функцией (int) , только тип данных поменялся на double . В чем же разница! Давайте рассмотрим:

$number = (float)'10.5cc2d';
echo $number;

у нас вернулось 10.5 при использовании функции (int) число округлилось бы до 10. Вот такая вот разница.

Что касается строковых значений:

$string = (string)true;
echo $string;

echo "<br/>";
echo gettype($string) ;

вернулось значение единица в виде строки , как и следовало ожидать:

$string = (string)10;
echo $string;/*10*/
$string = (string)['a','b'];
echo $string;/*array*/

При приведении числового значения у нас вернулось число в виде строки, если в качестве данных будет выступать массив, нам вернется просто строка 'array'.

Далее у нас идет тип данных массив(array):

$array = (array)10.4;
echo $array[0];

echo "<br/>";
echo gettype($array) ;

тут как видите мы использовали функцию (array) ,а дальше после приведения обратились к элементу нашего массива с индексом 0. Если мы хотим полностью посмотреть на наш массив, то в php существует специальная отладочная функция ptint_r()

$array = (array)'cds';
print_r($array);

echo "<br/>";
echo gettype($array);

как и следовало ожидать нам вернулся массив с его структурой. Array(0 => cds)

И на последок нам остается разобрать приведение данных к типу объект:

$object = (object)'String';
echo $object;

echo "<br/>";
echo gettype($object);

данное обращение через echo после приведения данных к типу объект приведет нас к ошибке, давайте попробуем обратится через отладочную функцию print_r()

$object = (object)'cds';
print_r($object);

после данных строк нам вернется значение и объект класса Object , как видим наше значение идентифицируется свойством scalar, следовательно обратившись к нему мы сможем получить наше значение.

$object = (object)10;
echo $object->scalar;

мы привели число 10 к типу объект и обратившись к свойству scalar объекта $object получили наше число.

И так дорогие друзья на этом данная статья подошла к концу.

Я очень надеюсь что вы не будете пренебрегать данными приведениями к типам при написании своего кода на PHP и тем самым убережете себя от множественных ошибок и взлома. Конечно для проверки данных которые приходят со стороны пользователя этого не достаточно. Но это уже совершенно другая история и тема для новой статьи.

Я желаю вам удачи и успехов. Берегите себя.

Пока!

Оцените статью

Еще статьи

Group by sql

datalist HTML

gitignore GIT

canvas html

входные данные PHP

Мета теги

tabindex html

FileSystem api

Как установить go

Комментарии

Проверочный код

В данном разделе пока нет комментариев!

История

    ПОДПИСКА

    • Подпишись и получай информацию о выходе новых статей на почту! Просто введите свою почту, нажмите кнопку подписаться. На почту должно будет прийти сообщение с потверждением подписки. Если сообщение не пришло проверьте раздел спам или попробуйте другую почту. Также по всем техническим проблемам вы можете написать в поддержку

    НОВОСТИ

    • Всем привет! Запустил новый сервис для поиска и бесплатного скачивания, прослушивания аудиокниг. Здесь вы можете найти множество литературы и прослушать ее. Вскоре возобновлю написание статей.