Se ho una variabile in PHP contenente 0001
e ne aggiungo 1, il risultato è 2 anziché 0002
.In PHP, come si aggiunge a una stringa numerica con riempimento zero e si conserva lo zero padding?
Come posso risolvere questo problema?
Se ho una variabile in PHP contenente 0001
e ne aggiungo 1, il risultato è 2 anziché 0002
.In PHP, come si aggiunge a una stringa numerica con riempimento zero e si conserva lo zero padding?
Come posso risolvere questo problema?
$foo = sprintf('%04d', $foo + 1);
Un'altra opzione è la funzione str_pad().
Probabilmente sarebbe di aiuto capire i tipi di dati PHP e il modo in cui sono interessati quando si eseguono operazioni con variabili di vario tipo. Dici di avere "una variabile in PHP dire 0001", ma che tipo è quella variabile? Probabilmente una stringa, "0001", poiché un intero non può avere quel valore (è solo 1). Quindi, quando si esegue questa operazione:
echo ("0001" + 1);
... l'operatore +
dice: "Hm, che è una stringa e un intero non so come aggiungere una stringa e un int Ma io so come.. per convertire una stringa INTO in un int, e quindi aggiungere due interi insieme, quindi lascia che lo faccia, "e poi converte" 0001 "in 1. Perché? Poiché le regole PHP per convertire una stringa in un intero dicono che qualsiasi numero di zeri iniziali nella stringa vengono scartati. Il che significa che la stringa "0001" diventa 1.
Quindi il +
dice "Ehi, so come aggiungere 1 e 1. È 2!" e l'output di tale affermazione è 2.
Non hai risolto il problema, ma hai ben spiegato. :) – DanMan
<?php
#how many chars will be in the string
$fill = 6;
#the number
$number = 56;
#with str_pad function the zeros will be added
echo str_pad($number, $fill, '0', STR_PAD_LEFT);
// The result: 000056
?>
Grazie, ha funzionato perfettamente. – Ryan