Jan K.: Variable zerlegen

Hallo zsuammen,

wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?

Ich bräcuhte denn auch mal einen tip, wie ich so eine funktion z.b. im php manual finde.

Gruß,

Jan

  1. hi,

    wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?

    Wenn das ein String ist, brauchst du ihn gar nicht "zerlegen", sondern kannst gleich auf die einzelnen Zeichen über einen nullbasierten Offset zugreifen.

    Wenn's stattdessen eine Zahl wäre - na dann dividierst du halt nacheinander durch aufsteigende Zehnerpotenzen, und ziehst dabei jeweils vor dem nächsten Schritt die "letzte Stelle" ab.

    Ich bräcuhte denn auch mal einen tip, wie ich so eine funktion z.b. im php manual finde.

    Für String: Unter Typen -> Strings nachschauen ...?

    Für Zahl: Zeitreise zurück, und im Matheunterricht besser aufpassen :-)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hm,

      hab das aus deinem link zum manual so probiert:

      $string='Zickezacke';
      $string1= $string{0};
      echo $string."<br>";  //Zickezacke
      echo $string1."<hr>"; //Z

      $wert=31415;
      $zahl='$wert';
      $zahl1= $zahl{0};
      echo $wert."<br>";  //31415
      echo $zahl1."<hr>"; //$

      $wert=31415;
      $zahl=$wert;
      $zahl1= $zahl{0};
      echo $wert."<br>";  //31415
      echo $zahl1."<hr>"; //

      Ist das kein string mehr wenn da eine zahl drinsteht?

      Ich bekomme nur einen übergabewert, in dem eine zahl drinsteht.
      Muss ich dann mit arithmetischen operatoren ran, so wie du das mit den zehnerpotenzen meintest?
      Oder gibts einen Operator der mir eine Zahl in einzelne STellen zerlegen kann?

      Gruß,

      Jan

      1. Du sagtest ja:

        ---
        Wenn's stattdessen eine Zahl wäre - na dann dividierst du halt nacheinander durch aufsteigende Zehnerpotenzen, und ziehst dabei jeweils vor dem nächsten Schritt die "letzte Stelle" ab.
        ---
        Damit hat sich mein anliegen ereldigt ;)

        Guter Ansatz so mach ichs, danke.

        Gruß,

        Jan

        1. Danke für den tip mit dem typecast Ashura, hat prima geklappt!

          Falls es noch wen interessiert, ich hab das problem folgendermaßen gelöst:

          $int_wert = $inhalt[0]; //Aus der $inhalt[0] kommt die zahl
          $str_wert = (string) $int_wert;
          $length=strlen($str_wert);

          for ($start=0; $start<=$length; $start++) {
           if ( $str_wert{$start} == 0) {
           $gesammt[$start]="<img src='images/0.gif'>";}
           if ( $str_wert{$start} == 1) {
           $gesammt[$start]="<img src='images/1.gif'>";}
           if ( $str_wert{$start} == 2) {
           $gesammt[$start]="<img src='images/2.gif'>";}
           if ( $str_wert{$start} == 3) {
           $gesammt[$start]="<img src='images/3.gif'>";}
           if ( $str_wert{$start} == 4) {
           $gesammt[$start]="<img src='images/4.gif'>";}
           if ( $str_wert{$start} == 5) {
           $gesammt[$start]="<img src='images/5.gif'>";}
           if ( $str_wert{$start} == 6) {
           $gesammt[$start]="<img src='images/6.gif'>";}
           if ( $str_wert{$start} == 7) {
           $gesammt[$start]="<img src='images/7.gif'>";}
           if ( $str_wert{$start} == 8) {
           $gesammt[$start]="<img src='images/8.gif'>";}
           if ( $str_wert{$start} == 9) {
           $gesammt[$start]="<img src='images/9.gif'>";}
          }

          echo " <table cellpadding='0'cellspacing='0'border='0'align='center'><tr> ";

          for ($start=0; $start<=($length-1); $start++) {
          echo "<td>$gesammt[$start]</td>";
          }
          echo "</tr></table>";

          Nun kann ich auch schlafen gehen ;)

          1. echo $begrüßung;

            for ($start=0; $start<=$length; $start++) {
            if ( $str_wert{$start} == 0) {
            $gesammt[$start]="<img src='images/0.gif'>";}
            if ( $str_wert{$start} == 1) {
            $gesammt[$start]="<img src='images/1.gif'>";}

            usw. usf.

            Fällt dir etwas auf? Du prüfst, ob ein Teil einer Variablen einen bestimmten Wert hat, um dann den gleichen Wert in einem anderen String zu verwenden. Und das ganze x-mal. Warum setzt du nicht gleich diesen anderen String aus den Festanteilen und dem variablen Wert zusammen?

            echo "$verabschiedung $name";

      2. Hallo Jan.

        $wert=31415;
        $zahl='$wert';
        $zahl1= $zahl{0};
        echo $wert."<br>";  //31415
        echo $zahl1."<hr>"; //$

        Hier deklarierst du $wert und verwendest es darauf hin im gesamten Block nicht ein einziges mal wieder, Absicht?

        $wert=31415;
        $zahl=$wert;
        $zahl1= $zahl{0};
        echo $wert."<br>";  //31415
        echo $zahl1."<hr>"; //

        Ist das kein string mehr wenn da eine zahl drinsteht?

        Natürlich nicht. Wenn dem nicht so wäre, wäre der Datentyp Integer (und Float) ziemlich überflüssig, meinst du nicht auch?

        Oder gibts einen Operator der mir eine Zahl in einzelne STellen zerlegen kann?

        Zum Beispiel per Typecast:

        $int_wert = 31415;  
        $str_wert = (string) $int_wert;  
        echo $str_wert{0} // 3
        

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
        1. Hallo Ingrid.

          echo $wert."<br>";  //31415
          […]

          Hier deklarierst du $wert und verwendest es darauf hin im gesamten Block nicht ein einziges mal wieder, Absicht?

          Ich gehe jetzt schlafen.

          Eine schöne Montagnacht noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]
        2. Vielen Dank,

          Type Cast ist ja wohl prädestiniert für das was ich vorhabe.

          Trozedem hab ich keine Ahnung wie ich das PHP Manual lesen soll.
          Wenn ich jetzt irgendwas machen will, wie z.b. eine zahl in einzelen stellen zerlegen und in der suchfunktion "Zahl zerlegen" eingebe ist wohl klar das ich so nicht fündig werde.

          Wahrscheinlich muss man wohl einen gesammtüberblick über PHP haben damit man sich die entsprechende funktion raussuchen kann.

          Gruß,

          Jan

  2. hallo,

    wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?

    Behandle sie als Array.

    Ich bräcuhte denn auch mal einen tip, wie ich so eine funktion z.b. im php manual finde.

    Das Manual hat eine sehr gut funktionierende Suchfunktion.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. hi,

      wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?

      Behandle sie als Array.

      Nee, lieber nicht.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. hi,

        Behandle sie als Array.
        Nee, lieber nicht.

        Der Verweis auf dein posting ist meines Erachtens als Begründung der Ablehnung meines Vorschlags nicht ausreichend (hach, hab ich das nicht schön gesagt - ich bin stolz auf mich!).

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. hi,

          Der Verweis auf dein posting ist meines Erachtens als Begründung der Ablehnung meines Vorschlags nicht ausreichend (hach, hab ich das nicht schön gesagt - ich bin stolz auf mich!).

          Dann folge doch dem Link zum Manual in meinem Posting, lies dort nach - und dann sei weiter/wieder stolz auf dich :-)

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }