Число с ведущими нулями
Возникает необходимость выводить числа с ведущими нулями (например, дата вида 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"
Спасибо за тесты )))
Первый вариант — один большой косяк. Уж если на то пошло, то работать будет
function numberFormat($digit, $width)
{
if(strlen($digit) == $width)
{
return $digit;
}
else
{
while(strlen($digit) < $width)
{
$digit = '0' . $digit;
}
return $digit;
}
}
Хотя зачем это нужно, когда есть str_pad() и sprintf()
Ваш код делает тоже самое, но длиннее, с лишним условием и 2 раза определяется длина строки.
Никто не мешает вам использовать str_pad() и sprintf()
И если уж на то пошло, то самым лишним и затратным здесь будет цикл.
А про str_pad() и sprintf() я уже высказался.
Посмотрите в песочнице — https://kobzarev.com/sandbox/leading-zeroes/
Добавил еще один способ с str_repeat()