character variable dekrementieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • character variable dekrementieren

    hi.

    folgendes problem: ich möchte eine character variable dekrementieren. inkrementieren ist kein problem:

    <?php
    $char = "a";

    for ($i = 0; $i <= 10; $i++)
    {
    $char++;
    echo $char . "<br>";
    }
    ?>

    gibt aus:
    a
    b
    c
    d
    .....


    aber das folgende geht leider nicht wie gewünscht:

    <?php
    $char = "z";

    for ($i = 0; $i <= 10; $i++)
    {
    $char--;
    echo $char . "<br>";
    }
    ?>

    gibt aus:
    z
    z
    z
    z
    z
    ....


    ich will aber erreichen, dass folgendes ausgegeben wird:

    z
    y
    x
    w
    v
    ...


    danke für eure hilfe!

  • #2
    wenn schon schleife, dann chr() benutzen.

    Kommentar


    • #3
      Re: character variable dekrementieren

      gibt aus:
      a
      b
      c
      d
      glaube ich nicht.

      PHP-Code:
      for ($char ord('z'), $i 0$i <= 10$i++)
        echo 
      chr($char--).'<br />'
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        einen ham mer noch
        PHP-Code:
        $char "l";
        $diff 10;
        $chars range($charchr(ord($char)+$diff));
        echo 
        implode('<br>',$chars);
        $char "l";
        echo 
        '<hr>';
        $chars range($charchr(ord($char)-$diff));
        echo 
        implode('<br>',$chars); 
        Kissolino.com

        Kommentar


        • #5
          danke für eure antworten!

          mit ord() und chr() bin ich sehr gut weitergekommen.

          übrigens:

          PHP-Code:
          <?php
          $char 
          "a";

          for (
          $i 0$i <= 10$i++)
          {
            
          $char++;
            echo 
          $char "<br>";
          }
          ?>
          gibt wirklich:
          a
          b
          c
          d

          aus. anscheinend scheint inkrementieren mit ++ operator und character variablen zu gehen. siehe auch:
          http://www.php.net/manual/en/languag....increment.php

          Kommentar


          • #6
            übrigens:
            [...]
            gibt wirklich:
            a
            b
            c
            d
            nein, kann doch garnicht sein! woher soll der wert "a" denn kommen?
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              habs mal getestet, anscheinen hat er recht - zumindest mit php 5.0.2 geht das
              mich verwirrt allerdings warum er bis 'yz' läuft, wenn $c <= 'z' meine bedingung ist ..

              Code:
              \PHP>php -v
              PHP 5.0.2 (cli) (built: Sep 24 2004 01:25:41)
              Copyright (c) 1997-2004 The PHP Group
              Zend Engine v2.0.2, Copyright (c) 1998-2004 Zend Technologies
              
              \PHP>php -r "for ($c = 'a'; $c <= 'z'; $c++) { echo $c; }"
              abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiaj [..] zyaybyc
              ydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyz
              EDIT:
              hab jetzt grad gemerkt dass hund drauf aus wollte, dass ER incrementiert und dann erst ausgibt, er also mit b anfangen müsste ..
              trotzdem: meine 2. frage und mein verwirrter zustand bleiben

              Zuletzt geändert von Coragon Rivito; 11.01.2005, 20:19.
              mfg,
              [color=#0080c0]Coragon[/color]

              Kommentar


              • #8
                Sag mal bitte, welcher Buchstabe ist größer: a oder Z?


                Beantwortet das deine Frage?

                Du kannst höchstens auf die ASCII-Werte vergleichen und dafür gibt es dann ord(), also komm nicht mit versuchten Vergleichen, ob etwas größer/kleiner etwas anderem ist....

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  ich denke du hast meine frage nicht richtig verstanden:

                  PHP-Code:
                  for ($c 'a'$c <= 'z'$c++) { printf('%s '$c); }
                  Code:
                  a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad
                  ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw
                  ax ay az ba [..] xv xw xx xy xz ya yb yc yd ye yf yg yh yi
                  yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz
                  warum und wieso läuft der bis yz anstatt nur bis z ?
                  und der ascii wert für a ist definitiv kleiner als der für z (von nem großen Z steht da nix)
                  mfg,
                  [color=#0080c0]Coragon[/color]

                  Kommentar


                  • #10
                    Original geschrieben von Coragon Rivito
                    und der ascii wert für a ist definitiv kleiner als der für z
                    Das stimmt, aber wandelt die Überprüfung die Zeichen vorher in ASCIIs um? Ich denke nein, warum auch....kannst ja mal versuchen (int)$c auszugeben, um zu gucken, wie das umgewandelt wird.

                    Auf jeden Fall, vergleichst du da nicht wirklich sauber (zumindest wenn man nach vereinfachtem logischen Denken ausgeht. Ein Mensch würde die Schleife natürlich so angehen, wie du willst, dass sie angegangen wird).
                    Und dann sollte es dich nicht wundern, wenn das Ergebnis unsauber ist!
                    (von nem großen Z steht da nix)
                    War auch nur als krasseres Beispiel hingeschrieben

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      witzige sache, hab da grad mal rumprobiert.
                      falls es jemanden interressiert:
                      1. string++ wird nicht in int konvertiert, sondern einfach der letzte buchstabe hochgezählt.
                      so wird z.b. aus "hallo welt"++ "hallo welu"
                      2. ist der letzte schon nen z, wird der davor erhöht (wenn der auch schon z is, dann der davor usw.).
                      dabei spielt groß- und kleinschreibung keine rolle. alles was groß war, bleibt es auch und andersrum.
                      ist keiner mehr da, wird der erste einfach zu aa bzw. AA
                      3. vergleichen von zeichenketten läuft buchstabenweise
                      sind die ersten buchstaben gleich, macht er mit dem nächsten weiter
                      sind sie verschieden, werden die ascii-werte verglichen.
                      so kommt es, daß z.b. az kleiner als z ist, za aber größer (z gleich z und a größer nix)

                      ...na ich muß ja langeweile haben...
                      eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                      Kommentar

                      Lädt...
                      X