Ist Zahl doch keine Zahl?

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

  • Ist Zahl doch keine Zahl?

    Hallo,

    habe einen eigentlich einfachen Codeauszug, jedoch funktioniert er nicht wie er soll.

    Hier der Auszug:
    PHP-Code:
    $_SESSION['nummer'] = intval($_SESSION['nummer']);

    echo 
    "das kommt an: ".$_SESSION['nummer']."<br>";
    $test is_integer($_SESSION['nummer']);
    echo 
    "test: ".$test."<br>";
    if (
    is_integer($_SESSION['nummer']))
    {
    $nummer_ok $_SESSION['nummer'];
    }
    else{
            echo 
    "fehler";
     } 
    Das Probelm ist, dass er mit immer "Fehler" ausgibt. Die Session var $_SESSION['nummer'] besitzt aber Werte wie 3, 44, 7 etc. Habe auch mal den eventuell möglichen String mit intval in eine reine Zahl umgewandelt, aber trotzdem wird das echo Fehler ausgegeben.

    Kann mir jemand helfen?

  • #2
    http://de2.php.net/manual/en/function.is-int.php
    Note: To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().

    Kommentar


    • #3
      is_numeric() hatte ich auch schon verwendet. Funzte aber auch nicht.

      Mit der echo ausgabe:

      PHP-Code:
      echo "das kommt an: ".$_SESSION['nummer']."<br>"
      wird mir aber ga^nz klar eine Zahl angezeigt. Beispielhafte Ausgabe:

      das kommt an: 7. Trotzdem funktioniert dann der nachfolgende Test nicht zu meiner Zufriedenheit. Verstehe das irgendwie nicht

      Kommentar


      • #4
        Ups, Sorry. Hab jetzt ca 2 Stunden an einer falschen Stelle versucht den Fehler zu beheben. Hatte 2 mal eine identische Fehlermeldung im Skript.
        Aus dem Grund habe ich an der falschen Stelle gewerkelt. Trotzdem Danke

        Kommentar


        • #5
          Typensicherheit in PHP....

          Lösungsvorschläge:

          1 - http://de.php.net/manual/de/function.ctype-digit.php

          2 -
          PHP-Code:
          $num = (int)$_SESSION['nummer'];
          echo 
          "das kommt an: ".$num."<br>"


          ungeprüft




          edit: zuspät...

          Kommentar


          • #6
            PHP-Code:
            <?php

            $int 
            3;
            $str '5';

            if (
            is_integer($int)) echo "$int ist eine Zahl<br>";
            else echo 
            "$int ist keine Zahl<br>";
            if (
            is_numeric($int)) echo "$int ist eine Zahl<br>";
            else echo 
            "$int ist keine Zahl<br>";

            if (
            is_integer($str)) echo "$str ist eine Zahl<br>";
            else echo 
            "$str ist keine Zahl<br>";
            if (
            is_numeric($str)) echo "$str ist eine Zahl<br>";
            else echo 
            "$str ist keine Zahl<br>";

            ?>
            Ausgabe:
            Code:
            3 ist eine Zahl
            3 ist eine Zahl
            5 ist keine Zahl
            5 ist eine Zahl
            Man beachte die dritte Zeile!

            Kommentar


            • #7
              am sicheresten ist es wenn Du IMMER einen (int) cast machst.

              $zahl = (int) $variable;

              War $variable keine Zahl ist $zahl = 0 also nicht mehr identisch zu $variable. Also muss man nur noch testen ob:

              if( $zahl != $variable ) {
              echo "es war keine Zahl";
              }

              Kommentar


              • #8
                PHP-Code:
                <?php

                $str 
                '3';    // ist ein String
                $int = (int)$str;    // ist ein Integer

                // gibt aus "sind gleich", was ja wohl nicht gewollt ist
                if ($int != $str) echo 'sind verschieden<br>';
                else echo 
                'sind gleich<br>';

                // gibt aus "sind verschieden", denn !== prüft
                // auch auf Typgleichheit
                if ($int !== $str) echo 'sind verschieden<br>';
                else echo 
                'sind gleich<br>';

                ?>

                Kommentar

                Lädt...
                X