Форматирование строки в число на языке PHP
Язык PHP предоставляет множество простых способов конвертаций строк в числа. Одним условием является то, что строка должна состоять исключительно из числовых символов. Если же строка состоит из набора буквенных символов, то возможно лишь получить ее длину (length) или код символа в числовом формате (intchar\int[] chars).
Арифметический оператор «+» и преобразование через «(int)»
Данный оператор может перевести с року в число без использования встроенных функций. Разберем это на строковом значении:
<?php
$int_1 = +»100″; \\ поставив оператор + перед строкой — получаем конвертацию строки в число
$int_2 = «100» + 0; \\ при сложении строка переводится в число. Мы сохранили значение сложив строку с нулем
$int_3 = 0 + «100»; \\ поменяли местом ноль и строку
$int_4 = (int)»100″; \\ явное преобразование с помощью оператора (int)\\ Функция var_dump($var) возвращает тип переменной и в скобках указывает ее значение
echovar_dump($int_1); \\ int(100)
echovar_dump($int_2); \\ int(100)
echovar_dump($int_3); \\ int(100)
echovar_dump($int_4); \\ int(100)
?>
Преобразование с помощью функции intval()
Функция intval(var) получает в качестве параметра любой тип и преобразует его в integer:
<?php
$str = «100»;
$int_from_str = intval($str); \\ Переводим значение в переменной str в число и сохраняем в другую переменную
echovar_dump($int_from_str); \\ int(100)
<?
Функция settype()
Функция settype(var, type) преобразовывает один тип переменной в другой. В первый параметр вставляется переменная или литерал, который нужно преобразовать, второй параметр указывает в какой тип преобразовывать — sring, integer, float, boolean и т. п.
Пример:
<?php
$str = «100»;
$str = settype($str, «integer»); \\ integer является строковым параметром и обрамляется кавычками
echovar_dump($str); \\ int(100)
?>
Что будет, если все эти возможности применить к символьной строке?
Любая операция, проведенная над символьной строкой будет равна нулю. Не важно: ставится ли плюс перед строкой, умножается ли строка на число или происходит явное преобразования с помощью функций или (int).
Результат всегда будет один. И если применить функцию var_dump(), то результат будет int(0), в некоторых случаях и int(NaN) — Not a Number. Данное значение получается в ходе умножения числа на слово или за счет арифметических операций между символьными строками и числами.
Самым универсальным оператором преобразования числа в строку является «+», поставленный перед строкой: +»44″. Данная конструкция всегда переводит строку в число во всех языках семейства Cи.