Otto
20.02.2011, 11:28:33
Witam mam taki problem z dodawaniem liczb z zachowaniem początkowych zer np.
$a = 002;
$a++;
Zwróci mi 3 a chciałbym otrzymać 003, niestety w google nic nie znalazłem na ten temat.
Otto
20.02.2011, 11:52:08
Myślę że to dobra funkcja lecz niestety nie za bardzo ją rozumiem z tego co zrozumiałem każdy format podchodzi pod inna liczbę ale coś mi nie działa
<?php
$a = 076;
$a++;
}
?>
Wydawało się być dobrze ale gdy $a wynosi 77 to coś wynik wychodzi 100... ;/
Valdi_B
20.02.2011, 12:47:36
Musisz tu rozróżnić 3 rzeczy:
1. Reprezentację liczby w kodzie programu (np. instrukcji podstawienia).
2. Reprezentację liczby w zmiennej.
3. Sposób jej prezentacji np. przy wydruku lub "wmontowaniu" w jakiś inny tekst.
W konkretnym przypadku:
1. Użyłeś zapisu 076, co oznacza zapis oktalny, dziesiętnie 62.
2. Liczba jest pamiętana jako integer (62), po inkrementacji - 63.
3. W kodzie programowym masz 2 sposoby konwersji: %03s (string) i %03o (oktalnie).
Gdy zamiast 076 dasz 077 (dziesiętnie 63), to po inkrementacji otrzymasz 100 (dziesiętnie 64).
A może to wszystko powinny być wartości dziesiętne?
Wtedy format konwersji powinien być %03d.
Zrób tak:
1. Liczbę podstawiaj do zmiennej bez prowadzącego zera (zer). Zakładam, że chodzi Ci o zapis dziesiętny.
2. Działaj na niej jak na zwykłej liczbie.
3. Funkcję sprintf("%03d", ...) stosuj tylko przy wyświetlaniu tej zmiennej (lub "wmontowaniu" jej w jakiś większy tekst).