PHP - есть ли быстрый метод "на лету" для проверки односимвольной строки с последующим добавлением начального нуля?
Пример:
$year = 11;
$month = 4;
$stamp = $year.add_single_zero_if_needed($month); // Imaginary function
echo $stamp; // 1104
PHP - есть ли быстрый метод "на лету" для проверки односимвольной строки с последующим добавлением начального нуля?
Пример:
$year = 11;
$month = 4;
$stamp = $year.add_single_zero_if_needed($month); // Imaginary function
echo $stamp; // 1104
Вы можете использовать sprintf: http://php.net/manual/en/function.sprintf.php
<?php
$num = 4;
$num_padded = sprintf("%02d", $num);
echo $num_padded; // returns 04
?>
Он добавит ноль только в том случае, если он меньше необходимого количества символов.
Изменить: как указано @FelipeAls:
При работе с числами вы должны использовать %d
(а не %s
), особенно когда есть вероятность отрицательных чисел. Если вы используете только положительные числа, любой вариант подойдет.
Например:
sprintf("%04s", 10);
возвращает 0010 sprintf("%04s", -10);
возвращает 0-10
В то время как:
sprintf("%04d", 10);
возвращает 0010 sprintf("%04d", -10);
возвращает -010
%03s
может выводить 0-5
, где %03d
выводит -05
- person FelipeAls; 11.07.2014
%02d
.
- person Kirk Beard; 17.02.2015
Вы можете использовать str_pad
для добавления нулей
str_pad($month, 2, '0', STR_PAD_LEFT);
string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )
Универсальный инструмент для форматирования строк, sprintf
:
$stamp = sprintf('%s%02s', $year, $month);
http://php.net/manual/en/function.sprintf.php