Мне было интересно, что лучший способ приведения значения из одного типа в другой.
Какой вариант мы должны использовать:
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)));
Ответ здесь заключается в том, чтобы использовать все, что читает «чище» для вас. Любая разница в скорости будет настолько незначительной, что беспокоиться об этом почти наверняка будет стоить вам больше времени, чем вы можете спасти. Однако, что сэкономит время, есть код, который вы можете читать и понимать в будущем.
Вот отличная статья, объясняющая это в Coding Horror .
Это зависит от того, какие типы вы конвертируете. PHP уже разработан для преобразования типов «на лету». Он может преобразовать строку «5» в целочисленное значение 5 или поплавок 5.0, если это необходимо. Это просто преобразование естественного типа PHP, но есть способы заставить подобное поведение.
Во многих случаях intval () может быть быстрее, чем (int) typecasting, особенно при преобразовании строк в целое. Но лично, поскольку я также пишу C ++, я использую typecasting, поскольку это более естественно и аккуратно для меня. Результаты, однако, несколько отличаются в разных ситуациях. Однако я никогда не думал, что settype () будет многообещающим.
(int)$value
намного быстрее, чем другие способы
Тип casting в PHP работает так же, как и в C: имя нужного типа записывается в круглых скобках перед переменной, которая должна быть выбрана.
http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting