Seltsames Verhalten mit substr()

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

  • Seltsames Verhalten mit substr()

    hallo zusammen,

    Ich habe ein an sich ganz einfaches Problem:

    PHP-Code:
        for($i=0;$i<=strlen($zahl);$i++)
        {
            if(
    is_numeric(substr($zahl$i1)))
            {
               
    $stringteil_zahl .= substr($zahl$i1);
            }
            else
            {
               
    $zahlen[] = $stringteil_zahl;
               
    $stringteil_zahl '';
               
    $ausgabe substr($zahl$i1); // hierum geht es
            
    }
        }
        echo 
    $ausgabe
    wenn ich den code so lasse dann sollte er mir eigentlich ein + ausgeben (Taschenrechner mach ich grad)

    aber das funzt nicht. Er gibt mir einfach gar nichts aus

    wenn ich aber nun statt

    PHP-Code:
        echo $ausgabe
    folgendes mache:

    PHP-Code:
        echo substr($zahl$i1); 
    dann wird mir das richtige ausgegeben.


    Kann es sein dass das ein PHP - bug is?

    Wir sind hier 4 Programmierer und können es uns beim besten willen nicht erklären.


    Liebe Grüße

    Paradoxx

  • #2
    Wollen wir wetten, dass das hier true ist:

    PHP-Code:
    if(is_numeric(substr($zahl$i1))) 
    und deswegen der betroffenen Teil garnicht betreten wird.

    Was sind denn das für vier Programmierer?

    Kommentar


    • #3
      Warum verwendest du überhaupt substr? Wenn du nur ein Zeichen aus einem String brauchst, nimm einfach die eckigen Klammern.

      PHP-Code:
      $wort 'Baum';
      echo 
      $wort[1]; // a
      echo $wort[3]; // m 

      Kommentar


      • #4
        Re: Seltsames Verhalten mit substr()

        Original geschrieben von Paradoxx

        PHP-Code:
            for($i=0;$i<=strlen($zahl);$i++)
            {
                if(
        is_numeric(substr($zahl$i1)))
                {
                   
        $stringteil_zahl .= substr($zahl$i1);
                }
                else
                {
                   
        $zahlen[] = $stringteil_zahl;
                   
        $stringteil_zahl '';
                   
        $ausgabe substr($zahl$i1); // hierum geht es
                
        }
            }
            echo 
        $ausgabe
        ...

        Wir sind hier 4 Programmierer und können es uns beim besten willen nicht erklären.
        überlegt mal in einer gruppendiskussion, was <= mit strlen() in diesem fall bewirkt
        Kissolino.com

        Kommentar


        • #5
          Er kommt 100%ig in den else fall rein. Wenn ich dort das echo setze, gibt ers jetzt aus.

          Aber ich habe ja darunter nochmal das gleiche echo, allerdings steht da wiederum nichts mehr drin.
          Ich versteh nicht wieso, eigentlich müsste er jetzt zwei plus ausgeben, es kommt aber nur eins. Überschreibe ich irgendwo $ausgabe und sehs einfach nicht?

          PHP-Code:
              for($i=0;$i<=strlen($zahl);$i++)
              {
                  if(
          is_numeric(substr($zahl$i1)))
                  {
                     
          $stringteil_zahl .= substr($zahl$i1);
                  }
                  else
                  {
                     
          $zahlen[] = $stringteil_zahl;
                     
          $stringteil_zahl '';
                     
          $ausgabe substr($zahl$i1);
                     echo 
          $ausgabe;
                  }
              }
              echo 
          $ausgabe

          Kommentar


          • #6
            ah ok dankeschön...an dem <= lags.

            Vielen Vielen dank

            Paradoxx

            Kommentar

            Lädt...
            X