Php sayı temsil sorunu

3 Cevap php

Bu basit bir şey ama bunun için cevap alamadım.

Yıl 0001 otomobil nesil numaraları bu 10 içinde, yıl 100001, böyle 100.002 ile otomatik nesil id CONCATENATE oluşturulur duyuyorum olduğunu. I yıl bölmek ve sayısı daha sonra bir değer katmak almak 0001'den 2. Ama zaman ben 0002 olarak ihtiyacımız var.

Adding value is 0001+1, 0002+1, 0010+1, 0099+1

Now the answer are 2, 3, 11, 100 like that

But i need like that 0002,0003,0011,0100

Şimdiden teşekkürler.

3 Cevap

$var = sprintf ('%04d', $var);

Bkz sprintf manual.

0001 bir dize var, bir sayı değildir. Buna 1 eklediğinizde, PHP (1), sonra bunun 1 ekler bir sayıya dönüştürür, böylece 2 ile sonuna kadar. Ne yapmak istediğinizi geri bir dizeye dönüştürme, 0 en ped ile sayıdır. Başkalarının önerilen gibi sprintf'i, ya str_pad kullanabilirsiniz.

str_pad(1, 4, '0', STR_PAD_LEFT);

Sen sayıları biçimlendirmek için iyi eski sprintf'i kullanabilirsiniz.

$a = 1;
$f = sprintf("%06s", $a);
echo $f;

"000001" yazdırır.

Dokümantasyon: http://php.net/manual/en/function.sprintf.php