Подтвердить что ты не робот

PHP-моделирование

Мне было интересно, что лучший способ приведения значения из одного типа в другой.

Какой вариант следует использовать:

  • intval($value);
  • settype($value, 'int')
  • (int)$value

Все они дают одинаковый результат.

4b9b3361

Ответ 1

(int)$value

сохраняет один вызов функции по сравнению с intval($value) и settype($value, 'int').

И (int)$value достаточно чистый, поэтому я предпочитаю этот путь.

Когда вам нужно использовать intval($value), вам нужно использовать указанную базу для преобразования (по умолчанию это база 10). intval принимает второй параметр для базы для преобразования.

Ответ 2

Я предпочитаю использовать

settype($value,getType(intval((int)$value)));

Ответ 3

Ответ здесь - использовать все, что читает "очиститель" для вас. Любая разница в скорости будет настолько незначительной, что беспокоиться об этом почти наверняка будет стоить вам больше времени, чем вы можете спасти. Тем не менее, для экономии времени требуется код, который вы можете читать и понимать в будущем.

Там отличная статья объясняет это в Кодирование ужасов.

Ответ 4

Это зависит от того, какие типы вы конвертируете. PHP уже разработан для преобразования типов "на лету". Он может преобразовать строку "5" в целочисленное значение 5 или поплавок 5.0, если это необходимо. Это просто преобразование естественного типа PHP, но есть способы заставить подобное поведение.

Во многих случаях intval() может быть быстрее, чем (int) typecasting, особенно при преобразовании строк в целое. Но лично, поскольку я также пишу С++, я использую typecasting, поскольку это более естественно и аккуратно для меня. Результаты, однако, несколько отличаются в разных ситуациях. Я никогда не думал, что settype() будет многообещающим.

Ответ 5

(int)$value намного быстрее, чем другие способы