Wie man eine Zahl mit führenden Nullen in PHP richtig formatiert
- Die Verwendung einer Zeichenkette als Ersatz für die Zahl
-
substr()
zum Hinzufügen führender Nullen in PHP -
printf()
/sprintf()
um führende Nullen in PHP hinzuzufügen -
str_pad()
zum Hinzufügen führender Nullen in PHP
In PHP können Zahlen oder ganze Zahlen mit führenden Nullen unterschiedliche Werte mit unerwarteten Ergebnissen haben.
Beispiel:
$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number
Um sicherzustellen, dass die Zahl ihre natürliche
Bedeutung nicht verliert, gibt es verschiedene Möglichkeiten, wie die Verwendung einer Zeichenkette anstelle einer Zahl oder die Verwendung verschiedener Funktionen wie substr
, printf()
/ sprintf()
und str_pad
zu versuchen.
Die Verwendung einer Zeichenkette als Ersatz für die Zahl
Der einfachste Ansatz; einfach eine Zeichenkette als Ersatz für die Zahl zu verwenden.
$number = "0987654321";
Wann zu verwenden:
- Es gibt keine erforderliche Länge der Ausgabe.
- Es gibt keine Ausnahme für die Zahl, daß sie immer eine führende Null benötigt.
substr()
zum Hinzufügen führender Nullen in PHP
Diese Methode schneidet die Zahlen von links ab, wenn die Zeichenkettenlänge überschritten wird.
Wenn start
negativ ist, beginnt die zurückgegebene Zeichenkette ab dem start
-ten Zeichen am Ende der String
.
Beispiel:
$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);
//output: 0000098765
Wann zu verwenden:
- Wenn es eine feste Länge der Ausgabezeichenkette gibt.
- Hinzufügen von Nullen, wenn die Zeichenkette kürzer als die Länge ist.
printf()
/sprintf()
um führende Nullen in PHP hinzuzufügen
So füllen Sie eine Ausgabe für eine feste Länge auf, wenn die Eingabe kleiner als die Länge ist, und geben die Zeichenkette zurück, wenn die Eingabe größer ist.
Beispiel:
$length = 10;
$char = 0;
$type = 'd';
$format = "%{$char}{$length}{$type}"; // or "$010d";
//print and echo
printf($format, 987654321);
//store to a variable
$newFormat = sprintf($format, 987654321);
// output: 0987654321
In diesem Beispiel wird die feste Länge auf 10 und die Eingabelänge auf 9 gesetzt, so dass bei Verwendung von printf()
/sprintf
links eine Null
hinzugefügt wird.
sprintf()
Parameterwerte
Parameter | Beschreibung |
---|---|
format (Erforderlich) |
Die Zeichenkette und wie die Variablen zu formatieren sind. Mögliche Formatwerte: %% - Prozentzeichen %b - Binär %c - Zeichen mit Bezug auf ASCII %d - Dezimalzahl (negativ oder positiv)%e - Wissenschaftliche Kleinschreibweise %E - Wissenschaftliche Großschreibweise %u - Dezimalzahl ohne Vorzeichen %f - Float-Zahl (lokale Einstellungen bekannt)%F - Float-Zahl (nicht lokale Einstellungen bekannt)%g - kürzere Version von %e und %f %G - kürzere Version von %E und %F %o - Oktal%s - Zeichenkette%x - Hexadezimal (Kleinbuchstaben)%X - Hexadezimal (Großbuchstaben) |
arg1 (Erforderlich) |
Beim ersten %-Zeichen einzufügen |
arg2 (fakultativ) |
Beim zweiten %-Zeichen einzufügen |
argg++ (fakultativ) |
Einzufügen am dritten, vierten usw. %-Zeichen |
Anmerkung:
- Wenn die Länge der Eingabezeichenkette größer oder gleich der Pad-Länge ist, wird nur die Zeichenkette zurückgegeben - es werden keine Zeichen ausgelassen.
- Auffüllen wird nur hinzugefügt, wenn die Länge der Eingabe kleiner als die Auffüllungslänge ist.
str_pad()
zum Hinzufügen führender Nullen in PHP
Mit dieser Methode wird eine Zeichenkette auf eine neue Länge von angegebenen Zeichen aufgefüllt.
Beispiel:
$length = 7;
$string = "12345";
echo str_pad($string,$length,"0", STR_PAD_LEFT);
//output: 0012345
Das obige Beispiel fügt der angegebenen Zeichenkette die “Null” hinzu, bis sie der angegebenen Länge entspricht (die in diesem Fall 7
ist).
str_pad()
Parameter-Liste
Parameter | Beschreibung |
---|---|
Saite |
Die aufzufüllende Zeichenkette |
length |
Gibt die neue Länge der Zeichenkette an. **Hinweis: **Wenn der Wert kleiner als die Länge der Zeichenkette ist, geschieht nichts. |
pad_zeichenkette |
Gibt die Zeichenkette an, die zum Auffüllen verwendet werden soll. Der Standardwert ist Whitespace. |
pad_type |
Gibt an, wo die Zeichenkette aufgefüllt werden soll. Akzeptierte Werte: STR_PAD_BOTH - Dies füllt beide Seiten der Zeichenkette auf.STR_PAD_LEFT - Füllt die linke Seite der Zeichenkette aufSTR_PAD_RIGHT - Füllt die rechte Seite der Zeichenkette auf |