Верх страницы
Время для прочтения: 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"

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

6 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
mihdan
9 лет назад

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

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

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

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

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

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

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

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

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

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

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

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

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

mihdan
7 лет назад

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

Предыдущая запись
Следующая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы