2012-05-07 6 views
0

Это:Как сохранить ведущие нули при вычитании 2 чисел в PHP?

$difference = 05-1; 

приводит

4 

же, если я это сделать:

$difference = 05-01; 

это есть встроенный способ вычитания, сохраняя при этом ведущие нули? Я знаю, что могу проверить, имеет ли разница только 1 символ или нет, и если да, добавьте начальный ноль, но было просто интересно, есть ли способ по умолчанию вернуть результат с 0 уже в нем.

+0

Осторожно с этим. Ведущие нули указывают восьмеричную нотацию, поэтому могут возникать такие неожиданные вещи: 'echo 012 - 4; // печатает 6'. – Wiseguy

+0

Остерегайтесь! Ведущие нули указывают восьмеричное число, поэтому '08-04' приведет к ошибке. И '023-005' не 018. –

+0

В этом скрипте я всегда буду вычитать 2 числа, первый может иметь или не иметь начальный нуль (он будет иметь только нулевой, если он находится между 1 и 9), а второй число всегда будет числом 1 (без начального нуля). Может ли этот сценарий вызвать неожиданные результаты? – TK123

ответ

2

Нет, я не думаю, что PHP будет поддерживать ведущие 0, если только это не поплавок. В ПГПС уме 4 является 4 не 04 Тхо 0.4 является 0.4

Так что, если вам нужен ведущий 0 в Интс ниже на 10 раздувания с str_pad():

<?php 
$difference = (05-1); 

echo str_pad($difference, 2, "0", STR_PAD_LEFT);//04 
?> 

<?php 
$difference = 234; 

echo str_pad($difference, 2, "0", STR_PAD_LEFT);//234 
?> 
+0

Это дает результат заданной длине. ОП запросил способ «сохранить» ведущие нули, что заставляет меня думать, что '05-1' должно быть напечатано как' 04', но '5-1' должно быть напечатано как' 4' (и '00005-1' как '00004'). ОП также необходимо уточнить, хотят ли они сохранить все нули или сохранить одинаковое количество мест (т. Е. Будет '010-9'' 001' или '01'?). – octern

+0

@octern Метод в этом ответе отлично подходит для моей ситуации, я всего лишь вычитаю целые числа, и все одиночные цифры должны иметь ведущее 0. – TK123

+0

@ JakeRow123 да, я понял, что это был вопрос (косметический вывод), это казалось запутанным другие abit. –

2

Если это просто вопрос вывода вы можете использовать Printf() для добавления ведущих нулей. Следующее:

<?php 
printf("Result: %02d", 04-1); 
?> 

выведет:

Result: 03 

% 02d переводит заполнить '0' (% 0 2d) в течение 2 пространств (% 0 г) и формат в виде целого числа (% 02 d). Printf() можно сделать много, чтобы установить точность, добавить ведущих символов и использовать заполнители при выводе текста.

+0

+1 У меня тоже было это предложение. – Wiseguy

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