2009-04-05 6 views

risposta

21
$foo = sprintf('%04d', $foo + 1); 
+0

Grazie, ha funzionato perfettamente. – Ryan

12

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.

+0

Non hai risolto il problema, ma hai ben spiegato. :) – DanMan

2
<?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 
?> 
Problemi correlati