chr..itz: Integer Verständnis Problem

Hallo Forum,

Ich hab gerade folgendes Verständnis (ggf. auch Unwissenheits -) Problem:

Ich übergebe an meine css erzeugende php Datei mittels ?css= eine Zahl (z.B. ?css=5 )
diese ist dann der Schluessel für das abzuklappernde Array in dem die Styleangaben stehen.

Weil ich einen Geistesblitz hatte und absolut nicht explizite
"auf den Array Schlüssel prüfen" wollte,
dachte ich an eine Prüfung mit:

if( >= 0 und < Anzahl_Array_Keys)
und ganz besonders an ein mit
is_int($_GET['css']),

ich weiss ja dass im Normalfall simple Zahlen ohne Komma kommen
(meines erachtens also Integer Zahlen?!) die ich folglich mit is_int() prüfen kann/können sollte.

Nur warum kann ich es letztendlich nicht?
Denn is_int() bringt mir immer false.

Um Erklärungen warum wäre ich dankbar.

Gruß Chris

  1. Hallo chr..itz.

    is_int($_GET['css']),

    Was sagt gettype() zum Inhalt von $_GET['css']?

    Einen schönen Dienstag noch.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Opera Mini on Treo
    Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
    [Deshalb frei! - Argumente pro freie Software]
    1. Hallo chr..itz.

      Hallo Ashura,

      Was sagt gettype()?

      schdring ... hab ich jetzt noch nie gehört und ...

      Einen schönen Dienstag noch.

      Wünsche ich Dir auch, aber auf dass meiner bald vorbei ist ;)
      Und danke für's Brett vor'm Kopf weghauen!

      Gruß, Ashura

      Gruß Chris

      1. Hallo chr..itz.

        Was sagt gettype()?

        schdring ... hab ich jetzt noch nie gehört und ...

        Du hast dir aber die Grundlagen in PHP angeeignet?

        Einen schönen Dienstag noch.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
        30 Days to becoming an Opera8 Lover -- Opera Mini on Treo
        Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
        [Deshalb frei! - Argumente pro freie Software]
        1. Hallo chr..itz.

          Moien Ashura,

          > Du hast dir aber die Grundlagen in PHP angeeignet?

          Ja, ich denke das habe ich ;)

          Und jenes :

          Und danke für's Brett vor'm Kopf weghauen!

          sollte eigentlich ausdrücken dass das Brett in dem Moment als mir gettype() string ausgab gerade zu weg geflogen ist.

          Einen schönen Dienstag noch.

          Gruß, Ashura

          Gruß Chris

  2. echo $begrüßung;

    is_int($_GET['css']),
    Denn is_int() bringt mir immer false.

    Die $_*-Arrays enthalten immer Strings. is_numeric() ist da besser geeignet.

    echo "$verabschiedung $name";

    1. echo $begrüßung;

      Hallo dedlfix,

      Die $_*-Arrays enthalten immer Strings.

      .. es ist nicht so dass ich das noch nie gehört habe .... was die Sache natürlich eher verschlimmert ;-)

      echo "$verabschiedung $name";

      Gruß Chris

      1. Hallo chr..itz,

        .. es ist nicht so dass ich das noch nie gehört habe .... was die Sache natürlich eher verschlimmert ;-)

        Das mit dem is_int() hat mich damals auch verwundert.
        is_numeric() wollte ich aber nicht verwenden da es auch andere Typen als Integer erlaubt. Deshalb habe ich folgende Funktion definiert, sie könnte dir nützlich sein:

        function isValidNumber($str)  
        {  
          return preg_match('/^[0-9]+$/', $str);  
        }
        

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html
        1. echo $begrüßung;

          is_numeric() wollte ich aber nicht verwenden da es auch andere Typen als Integer erlaubt.

          Meinst du die E-Notation und Fließkommazahlen?

          Es gibt auch noch diverse ctype-Funktionen.

          echo "$verabschiedung $name";

        2. Hallo nochmals,

          Das mit dem is_int() hat mich damals auch verwundert.
          is_numeric() wollte ich aber nicht verwenden da es auch andere Typen als Integer erlaubt. Deshalb habe ich folgende Funktion definiert, sie könnte dir nützlich sein:

          function isValidNumber($str)

          {
            return preg_match('/[1]+$/', $str);
          }

            
          Nach weiterer Recherche bin ich auf die Funktion [intval()](http://de.php.net/manual/de/function.intval.php) gestoßen, die auf jeden Fall eine int-Zahl ausgibt. Das wird deinen Anspruch sicher erfüllen.  
            
          Die folgenden beiden Codeausschnitte haben beide den gleichen Effekt:  
          `$zahl = intval($variable);`{:.language-php}  
          und  
          `$zahl = (int) $variable;`{:.language-php}  
            
          Bei Problemen hat $zahl danach den Wert 0.  
            
            
          Grüße  
            
          Marc Reichelt || <http://www.marcreichelt.de/>  
          
          -- 
          Linux is like a wigwam - no windows, no gates and an Apache inside!  
            
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)  
          <http://emmanuel.dammerer.at/selfcode.html>
          

          1. 0-9 ↩︎

          1. Hello,

            Nach weiterer Recherche bin ich auf die Funktion intval() gestoßen, die auf jeden Fall eine int-Zahl ausgibt. Das wird deinen Anspruch sicher erfüllen.

            Das kommt darauf an, ob ein NULL-Value erforderlich ist für 'keine' oder 'fehlerhafte' Eingabe.

            intval(irgendwas) gibt immer 0 aus, wenn keine erkennbare numerische Größe voransteht. Man kann also nicht erkennen, ob die Eingabe "richtig" war.

            Die Preg_Match()-Methode ist da zwar teurer, aber bestimmt auch sicherer.

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Danke euch allen für die Lösungsansetze,

              intval(irgendwas) gibt immer 0 aus, wenn keine erkennbare numerische Größe voransteht. Man kann also nicht erkennen, ob die Eingabe "richtig" war.

              Das liest sich doch gut an, mit einer 0 im worst case kann ich leben und vorallem arbeiten.

              Danke noch mal

              Gruß Chris