Верх страницы
Время для прочтения: 0 мин. 15 сек.

Число с ведущими нулями

Возникает необходимость выводить числа с ведущими нулями (например, дата вида 01.02.2010).

Небольшие кусочки кода (так называемые сниппеты) позволяют сделать это без лишних манипуляций.

Вариант 1 — функция

<?php
function numberFormat($digit, $width) {
    while(strlen($digit) < $width)
      $digit = '0' . $digit;
      return $digit;
}

Использовать достаточно просто:

<?php
$str = 1;
echo numberFormat($str, 4);
// Выведет "0001"

Вариант 2 — str_pad()

<?php
$str = '1';
echo str_pad($str, 4, '0', STR_PAD_LEFT);
// Выводит "0001"

Вариант 3 — sprintf()

<?php
$str = '1';
echo sprintf("%04d", $str);
// Выводит "0001"
ВКонтакте
Одноклассники
Telegram

Комментарии
Подписаться
Уведомить о
guest
6 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
mihdan
7 лет назад

Спасибо за тесты )))

Дмитрий
Дмитрий
5 лет назад

Первый вариант — один большой косяк. Уж если на то пошло, то работать будет

function numberFormat($digit, $width)
{
if(strlen($digit) == $width)
{
return $digit;
}
else
{
while(strlen($digit) < $width)
{
$digit = '0' . $digit;
}
return $digit;
}
}

Хотя зачем это нужно, когда есть str_pad() и sprintf()

mihdan
5 лет назад
Ответить на  Дмитрий

Ваш код делает тоже самое, но длиннее, с лишним условием и 2 раза определяется длина строки.

Никто не мешает вам использовать str_pad() и sprintf()

Дмитрий
Дмитрий
5 лет назад
Ответить на  mihdan

И если уж на то пошло, то самым лишним и затратным здесь будет цикл.

А про str_pad() и sprintf() я уже высказался.

mihdan
5 лет назад
Ответить на  Дмитрий

Посмотрите в песочнице — https://kobzarev.com/sandbox/leading-zeroes/

mihdan
5 лет назад

Добавил еще один способ с str_repeat()