Muszę rzucać pojedyncze figury (od 1 do 9) do (od 01 do 09). Znam sposób, ale jest duży, brzydki i nieporęczny. Jestem pewien, że musi być jakiś zwięzły sposób. Jakieś sugestie
Po pierwsze, twój opis jest mylący. Doublejest zmiennoprzecinkowym typem danych. Prawdopodobnie chcesz uzupełnić cyfry wiodącymi zerami w ciągu. Następujący kod to robi:
$s = sprintf('%02d', $digit);
Aby uzyskać więcej informacji, zapoznaj się z dokumentacją sprintf.
@HirenBhut Cóż, to jest zupełnie inne i nie ma z tym nic wspólnegosprintf . Sprawdź format liczb całkowitych , w szczególności sekcję dotyczącą cyfr ósemkowych.
Konrad Rudolph
@KonradRudolph Tak, czy jest jakieś możliwe rozwiązanie?
digit
wartość jako liczbę całkowitą w tym czasie podany błąd, jeśli przejdę jako ciąg, tym razem nie ma problemusprintf
. Sprawdź format liczb całkowitych , w szczególności sekcję dotyczącą cyfr ósemkowych.Jest też str_pad
źródło
Rozwiązanie za pomocą str_pad :
Test porównawczy na php 5.3
Kod:
źródło
Wydajność
str_pad
mocno zależy od długości wyściółki. Aby uzyskać bardziej stałą prędkość, możesz użyć str_repeat .Użyj również wartości ciągu liczby, aby uzyskać lepszą wydajność.
Testowano na PHP 7.4
źródło