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

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

webfanat вконтакте webfanat youtube

PHP типы данных

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 и тем самым убережете себя от множественных ошибок и взлома. Конечно для проверки данных которые приходят со стороны пользователя этого не достаточно. Но это уже совершенно другая история и тема для новой статьи.

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

Пока!

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

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm