Мне было интересно, что лучший способ приведения значения из одного типа в другой.
Какой вариант следует использовать:
-
intval($value);
-
settype($value, 'int')
-
(int)$value
Все они дают одинаковый результат.
Мне было интересно, что лучший способ приведения значения из одного типа в другой.
Какой вариант следует использовать:
intval($value);
settype($value, 'int')
(int)$value
Все они дают одинаковый результат.
(int)$value
сохраняет один вызов функции по сравнению с intval($value)
и settype($value, 'int')
.
И (int)$value
достаточно чистый, поэтому я предпочитаю этот путь.
Когда вам нужно использовать intval($value)
, вам нужно использовать указанную базу для преобразования (по умолчанию это база 10). intval принимает второй параметр для базы для преобразования.
Я предпочитаю использовать
settype($value,getType(intval((int)$value)));
Ответ здесь - использовать все, что читает "очиститель" для вас. Любая разница в скорости будет настолько незначительной, что беспокоиться об этом почти наверняка будет стоить вам больше времени, чем вы можете спасти. Тем не менее, для экономии времени требуется код, который вы можете читать и понимать в будущем.
Там отличная статья объясняет это в Кодирование ужасов.
Это зависит от того, какие типы вы конвертируете. PHP уже разработан для преобразования типов "на лету". Он может преобразовать строку "5" в целочисленное значение 5 или поплавок 5.0, если это необходимо. Это просто преобразование естественного типа PHP, но есть способы заставить подобное поведение.
Во многих случаях intval() может быть быстрее, чем (int) typecasting, особенно при преобразовании строк в целое. Но лично, поскольку я также пишу С++, я использую typecasting, поскольку это более естественно и аккуратно для меня. Результаты, однако, несколько отличаются в разных ситуациях. Я никогда не думал, что settype() будет многообещающим.
(int)$value
намного быстрее, чем другие способы
Приведение типов в PHP работает так же, как и в C: имя нужного типа записывается в круглых скобках перед переменной, которая должна быть выбрана.
http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting