Formatta correttamente un numero con zeri iniziali in PHP
- Usa una stringa per sostituire il numero
-
substr()
per aggiungere zeri iniziali in PHP -
printf()
/sprintf()
per aggiungere zeri iniziali in PHP -
str_pad()
per aggiungere zeri iniziali in PHP
In PHP, numeri o interi con zeri iniziali possono avere valori diversi con risultati imprevisti.
Esempio:
$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number
Per assicurarti che il numero non perda il suo significato naturale
, ci sono diversi modi per provare come usare una stringa invece di un numero o usando diverse funzioni come substr
, printf()
/ sprintf()
e str_pad
.
Usa una stringa per sostituire il numero
L’approccio più semplice; semplicemente per usare una stringa come sostituto del numero.
$number = "0987654321";
Quando usare:
- Non è richiesta la lunghezza dell’output.
- Non c’è eccezione al numero che necessita sempre di uno zero iniziale.
substr()
per aggiungere zeri iniziali in PHP
Questo metodo ritaglia i numeri da sinistra quando la lunghezza della stringa è stata superata.
Se l’start
è negativo, la stringa restituita inizierà dal carattere start'th
dalla fine della stringa.
Esempio:
$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);
//output: 0000098765
Quando usare:
- Quando c’è una lunghezza fissa della stringa di output.
- Aggiunta di zeri quando la stringa è inferiore alla lunghezza.
printf()
/sprintf()
per aggiungere zeri iniziali in PHP
Per riempire un output per una lunghezza fissa, quando l’input è inferiore alla lunghezza, e restituire la stringa quando l’input è maggiore.
Esempio:
$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
Nell’esempio, la lunghezza fissa è impostata a 10 e la lunghezza di input è 9, quindi aggiunge uno zero
a sinistra se si usa printf()
/sprintf
.
- Valori dei parametri
sprintf()
Parametro | Descrizione |
---|---|
format (obbligatorio) |
La stringa e come formattare le variabili. Possibili valori di formato: %% - Segno di percentuale %b - Binario %c - Carattere a cui si fa riferimento ASCII %d - numero decimale (negativo o positivo) %e - notazione scientifica minuscola %E - notazione scientifica maiuscola %u - Numero decimale senza segno %f - Numero mobile (compatibile con impostazioni locali) %F - Numero mobile (non compatibile con impostazioni locali) %g - versione più breve di %e e %f %G - versione più corta di %E e %F %o - ottale %s - Stringa %X - Esadecimale (minuscolo) %X - Esadecimale (maiuscolo) |
arg1 (obbligatorio) |
Da inserire al primo segno % |
arg2 (facoltativo) |
Da inserire al secondo segno % |
argg++ (Opzionale) |
Da inserire al terzo, quarto, ecc. segno % |
Nota:
- Se la lunghezza della stringa di input è maggiore o uguale alla lunghezza del pad, restituirà solo la stringa - nessun carattere verrà omesso.
- Il riempimento viene aggiunto solo se la lunghezza dell’input è inferiore alla lunghezza del riempimento.
str_pad()
per aggiungere zeri iniziali in PHP
Questo metodo riempirà una stringa con una nuova lunghezza di caratteri specificati.
Esempio:
$length = 7;
$string = "12345";
echo str_pad($string,$length,"0", STR_PAD_LEFT);
//output: 0012345
L’esempio sopra aggiungerà lo zero
alla stringa specificata finché non corrisponde alla lunghezza specificata (che è 7
in questo caso).
str_pad()
Elenco dei parametri
Parametro | Descrizione |
---|---|
string |
La corda da riempire |
length |
Specifica la nuova lunghezza della stringa. Nota: Se il valore è inferiore alla lunghezza della stringa, non accadrà nulla. |
pad_string |
Specifica la stringa da utilizzare per il riempimento. Il valore predefinito è uno spazio bianco. |
pad_type |
Specifica dove riempire la stringa. Valori accettati: STR_PAD_BOTH - Questo riempirà entrambi i lati della stringa. STR_PAD_LEFT - Riempi il lato sinistro della stringa STR_PAD_RIGHT - Pad sul lato destro della stringa |