2012-06-26 2 views
2

Есть ли польза включить length specifier в строку формата для sprintf или printf даже если он не упоминается in the PHP manual:Sprintf спецификатор в PHP

  • h - аргумент трактуется как короткий INT или беззнаковое короткое int (применяется только к спецификаторам целого числа: i, d, o, u, x и X).
  • l - Аргумент интерпретируется как длинное Int или без знака для длительного Int целочисленных спецификаторов (i, d, o, u, x и X), а также широкий символ или строку широких символов для спецификаторов c и s.
  • L - Аргумент интерпретируется как длинный двойной (применяется только к плавающей запятой спецификаторов: e, E, f, g и G).

Или лучше оставить его? Я предполагаю, что я пытаюсь понять, почему php решил оставить это.

Рассмотрим следующий код, который приходит от phpriot.com:

$a = 0.5; 
$b = 0.1; 
$c = 16; 

echo sprintf('%01.2lf %.1lf 0x%x', $a, $b, $c); # 0.50 0.1 0x10 

ответ

4

В PHP нет различий между числами, кроме Integers и Floats. В зависимости от архитектуры системы, 32 или 64-разрядной, тип Integer является int или int64. Вы можете использовать строки и BCMath для имитации больших чисел, но они всегда будут храниться в строках.

Так что в PHP нет цели иметь спецификатор длины для изменения типа номера. Либо это поплавок, либо нет.

+0

Благодарим вас за отличное объяснение. –

4

Это не нужно. PHP не имеет коротких ints, ints, long int и т. Д. Он имеет только ints.

+0

тоже спасибо за пояснение. –

Смежные вопросы