Seltsames Verhalten mit substr()

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Comment


    • #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 

      Comment


      • #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

        Comment


        • #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

          Comment


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

            Vielen Vielen dank

            Paradoxx

            Comment

            Working...
            X