2009-04-05 6 views

ответ

21
$foo = sprintf('%04d', $foo + 1); 
+0

Спасибо, отлично работал. – Ryan

12

Это, вероятно, поможет вам понять типы данных PHP и как они влияют, когда вы делаете операции с переменными различных типов. Вы говорите, что у вас «переменная в PHP говорит 0001», но какой тип этой переменной? Вероятно, строка «0001», поскольку целое число не может иметь это значение (это всего лишь 1). Так что, когда вы это делаете:

echo ("0001" + 1); 

... оператор + говорит: «Хм, это строка и целое, я не знаю, как добавить строку и Int, но я знаю, как.. чтобы преобразовать строку INTO в int, а затем добавить два int вместе, так что позвольте мне сделать это », а затем он преобразует« 0001 »в 1. Почему? Поскольку правила PHP для преобразования строки в целое число говорят, что любое количество ведущих нулей в строке отбрасывается. Это означает, что строка «0001» становится равной 1.

Затем + говорит: «Привет, я знаю, как добавить 1 и 1. Это 2!» и выход этого отчета равен 2.

+0

Вы не решили проблему, но приятно объяснили. :) – DanMan

2
<?php 
#how many chars will be in the string 
$fill = 6; 
#the number 
$number = 56; 
#with str_pad function the zeros will be added 
echo str_pad($number, $fill, '0', STR_PAD_LEFT); 
// The result: 000056 
?> 

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

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