Thomas L: Variablen mit führender Null (Zahlenformat)??

Hallo Forumler,

ich übergebe per GET in der URL so etwas wie bnr=01.

Nun möchte ich die Zahl um eins hoch bzw. runter zählen
($vor = $_GET[bnr]--; $nach = $_GET[bnr]++;).
Leider wird so aus 01-1=0 bzw. 02+1=3.
Allerdings brauche ich es so, dass dabei die vorangestellte Null nicht verloren geht.

Ist so etwas möglich? Kann ich das Zahlenformat vielleicht von vornherein auf 2 oder 3 Stellen festlegen?

Vielen Dank im voraus für Eure aufschlussreichen Antworten und viele Grüße

Thomas L.

  1. Hello,

    Parameter werden in PHP immer als Typ String übergeben.
    Ob das verbrieft ist und ewig so bleiben wird, weiß ich nicht.

    Wenn man nun zu einem numerischen String eins hinzuzählt, wird auch der Typ zu einem Zahlentyp umgewandelt. Du müsstest also nachher wieder einen String draus machen und die führenden Nullen ergänzen.

    feststellen, wie lang der übergebene String ist und in $len merken
      zum String eins hinzuzählen
      wieder ein einen String verwandeln, und die führenden Nullen ergänzen.

    $str_zahl = substr(str_repeat('0',$len).$ergebnis,(-$len))

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. hi,

      feststellen, wie lang der übergebene String ist und in $len merken
        zum String eins hinzuzählen
        wieder ein einen String verwandeln, und die führenden Nullen ergänzen.

      na ja, number_format() und sprintf() hätte PHP da ja auch noch zu bieten.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      1. Hello,

        feststellen, wie lang der übergebene String ist und in $len merken
          zum String eins hinzuzählen
          wieder ein einen String verwandeln, und die führenden Nullen ergänzen.

        na ja, number_format() und sprintf() hätte PHP da ja auch noch zu bieten.

        Dagegen ist auch nichts einzuwenden
        Trotzdem muss man ja vorher feststellen, ob z.B.  002 oder 0000000002 übertragen wurde, wenn die Qualität der Benutzereingaben für die innere Reaktion berücksichtigt werden soll.

        Dass das ganze Verfahren fragwürdig ist, da Benutzereingaben prinzipiell als nicht vertrauenswürdig gelten, lassen wir hier mal (ausnahmsweise) außer Betracht.

        Und wenn es ohnehin klar ist, dass auf n Stellen linksseitig aufgefüllt werden muss, dann kann man das ja standartmeeßig[tm] tun

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo

          und vielen Dank für Eure Antworten.

          Ich habe es jetzt so gelöst:
          if (strlen($val)==1) {$val = "0".$val; }

          Gruß
          Thomas L.

  2. Hi,

    Nun möchte ich die Zahl um eins hoch bzw. runter zählen
    ($vor = $_GET[bnr]--; $nach = $_GET[bnr]++;).
    Leider wird so aus 01-1=0 bzw. 02+1=3.

    Schon mal folgendes probiert:

    <?php echo 010 - 1 ?>

    Das Ergebnis mag für Dich überraschend sein, kommt aber daher, daß in PHP Zahlen mit führender 0 als Oktalzahlen behandelt werden.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.