Formatta correttamente un numero con zeri iniziali in PHP

  1. Usa una stringa per sostituire il numero
  2. substr() per aggiungere zeri iniziali in PHP
  3. printf()/sprintf() per aggiungere zeri iniziali in PHP
  4. 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:

  1. Non è richiesta la lunghezza dell’output.
  2. 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:

  1. Quando c’è una lunghezza fissa della stringa di output.
  2. 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

Articolo correlato - PHP Function

  • Crea una funzione PHP con più ritorni