2008-11-27 7 views
92

Мне нужно наложить одиночные цифры (от 1 до 9) на (от 01 до 09). Я могу представить себе путь, но его большой и уродливый и громоздкий. Я уверен, что должен быть какой-то лаконичный путь. Любые предложенияЦифры нулевой прокладки в строке

+0

Возможный дубликат [Форматирование числа с ведущими нулями в PHP] (http://stackoverflow.com/questions/1699958/formatting-a-number-with-leading-zeros-in-php) – 2016-12-06 15:27:43

ответ

173

Прежде всего, ваше описание вводит в заблуждение. Double - тип данных с плавающей точкой. Вы, по-видимому, хотите поместить свои цифры с ведущими нулями в строке. Следующий код делает это:

$s = sprintf('%02d', $digit); 

Для получения дополнительной информации обратитесь к документации sprintf.

+0

хорошая работа. он работает – 2017-08-25 02:16:34

73

Там также str_pad

<?php 
$input = "Alien"; 
echo str_pad($input, 10);      // produces "Alien  " 
echo str_pad($input, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien" 
echo str_pad($input, 10, "_", STR_PAD_BOTH); // produces "__Alien___" 
echo str_pad($input, 6 , "___");    // produces "Alien_" 
?> 
54

Решение с использованием str_pad:

str_pad($digit,2,'0',STR_PAD_LEFT); 

Benchmark на PHP 5,3

Результат str_pad: 0,286863088608

Res Sprintf ии: 0,234171152115

Код:

$start = microtime(true); 
for ($i=0;$i<100000;$i++) { 
    str_pad(9,2,'0',STR_PAD_LEFT); 
    str_pad(15,2,'0',STR_PAD_LEFT); 
    str_pad(100,2,'0',STR_PAD_LEFT); 
} 
$end = microtime(true); 
echo "Result str_pad : ",($end-$start),"\n"; 

$start = microtime(true); 
for ($i=0;$i<100000;$i++) { 
    sprintf("%02d", 9); 
    sprintf("%02d", 15); 
    sprintf("%02d", 100); 
} 
$end = microtime(true); 
echo "Result sprintf : ",($end-$start),"\n"; 
-5
"0$digit" 

.. если вы уже знаете свою единственную цифру!

 Смежные вопросы

  • Нет связанных вопросов^_^