Frage

Wenn ich eine Variable in PHP enthalten 0001 habe und ich füge hinzu 1, um es, das Ergebnis ist 2 statt 0002.

Wie kann ich dieses Problem lösen?

War es hilfreich?

Lösung

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

Andere Tipps

Es wäre wahrscheinlich helfen, die PHP-Datentypen zu verstehen und wie sie betroffen sind, wenn Sie Operationen auf Variablen von verschiedenen Arten tun. Sie sagen, Sie „eine Variable in PHP sagen 0001“ haben, aber welche Art ist diese Variable? Wahrscheinlich eine Zeichenfolge, „0001“, da eine ganze Zahl nicht diesen Wert haben kann (es ist nur 1). Also, wenn Sie dies tun:

echo ("0001" + 1);

... der + Operator sagt: „Hm, das ist eine Zeichenkette und eine ganze Zahl. Ich weiß nicht, wie man einen String und einen int hinzuzufügen. Aber ich weiß, wie man einen String in einem int konvertieren, und dann addieren sich zwei ints, so lassen sie mich das machen“, und wandelt sie dann‚0001‘bis 1. Warum? Da die PHP-Regeln für eine Zeichenfolge in eine ganze Zahl konvertieren sagen, dass eine beliebige Anzahl von führenden Nullen in der Zeichenfolge verworfen werden. Was bedeutet, dass die Zeichenfolge "0001" wird 1.

Dann sagt der +: „Hey, ich weiß, wie 1 hinzuzufügen und 1. Es ist 2!“ und der Ausgang dieser Aussage ist 2.

Eine weitere Option ist die str_pad () Funktion.

$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
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top