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

PHP preend ведет ноль перед одноразрядным числом, на лету

PHP. Есть ли быстрый, "на лету" метод для проверки одиночной символьной строки, затем добавьте начальный ноль?

Пример:

$year = 11;
$month = 4;

$stamp = $year.add_single_zero_if_needed($month);  // Imaginary function

echo $stamp; // 1104
4b9b3361

Ответ 1

Вы можете использовать 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

Ответ 2

Вы можете использовать str_pad для добавления 0

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 ]] )

Ответ 4

Похоже, они занимают много строк, чтобы заставить его работать. Я использую эту короткую функциональность IF, и она дает тот же результат, что и OP.

$month = 8;
echo ($month < 10 ? '0'.$month : $month); // output: 08

И для отображения правильного вывода

требуется только одна строка,