In PHP, come faccio ad aggiungere ad una stringa numerica zero imbottita e preservare l'imbottitura a zero?

StackOverflow https://stackoverflow.com/questions/718229

Domanda

Se ho una variabile in PHP contenente 0001 e aggiungo 1 ad esso, il risultato è 2 invece di 0002.

Come faccio a risolvere questo problema?

È stato utile?

Soluzione

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

Altri suggerimenti

Sarebbe probabilmente aiuterà a capire i tipi di dati PHP e come vengono colpiti quando si fanno operazioni alle variabili di vario tipo. Tu dici di avere "una variabile in PHP dire 0001", ma che tipo è quella variabile? Probabilmente una stringa, "0001", dal momento che un numero 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 so come convertire una stringa in un int, e quindi aggiungere due interi insieme, così mi permetta di fare questo," e poi lo converte '0001' per 1. Perché? Poiché le regole PHP per convertire una stringa in un intero dire che qualsiasi numero di zeri nella stringa vengono scartati. Il che significa che la stringa "0001" diventa 1.

Poi il + dice: "Ehi, io so come aggiungere 1 e 1. E '2!" e l'uscita di questa affermazione è 2.

Un'altra opzione è la str_pad () funzione.

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
<?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
?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top