kölir: ist ganzzahlig?

Hi,

wie kann ich prfen ob ein Integer ganzzahlig ist? ohen punkt komma usw? Einfach eine Zahle oder mehrere Zahlen in Folge aber nix anderes?
is_numeric lässt ja auch kommatzahlen zu?

  1. Hallo!

    is_numeric lässt ja auch kommatzahlen zu?

    Und auch z.B. 12e4.

    Ich nehme da eine eigene Funktion, um ganz sicher zu gehen.

    function is_pos_id($id = 0)
    {
        if(preg_match('/[1][0-9]*$/', $id)) {
            return true;
        }
        return false;
    }

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!

    1. 1-9 ↩︎

    1. Hallo!

      function is_pos_id($id = 0)
      {
          if(preg_match('/[1][0-9]*$/', $id)) {
              return true;
          }
          return false;
      }

      Setze noch ein @ vor preg_match(), um Fehlermeldungen zu unterdrücken, falls ein Array etc. übergeben wird.

      Man kann es aber auch so machen:

      function is_pos_id($id = 0)
      {
          if(!isset($id) || empty($id)) {
              return false;
          }
          if(is_array($id)) {
              return false;
          }
          if(preg_match('/[2][0-9]*$/', $id)) {
              return true;
          }

      return false;
      }

      André Laugks

      --
      Die Frau geht, die Hilti bleibt!

      1. 1-9 ↩︎

      2. 1-9 ↩︎

      1. ich würde es einfach mit der funktion is_int() versuchen. damit wird geprüft, ob die zahl integer (also ganzzahlig ist).

        beispiel

        is_int(4/2) = true
        is_int(3/2) = false

        1. echo $begrüßung;

          ich würde es einfach mit der funktion is_int() versuchen. damit wird geprüft, ob die zahl integer (also ganzzahlig ist).

          Nein, diese Funktion prüft, ob eine Variable oder ein Ausdrucks vom Typ Integer ist, nicht ob ihr Inhalt einem Integerwert entspricht.

          beispiel
          is_int(4/2) = true
          is_int(3/2) = false

          is_int(0.5 + 0.5) = false, da das Ergebnis von 0.5 + 0.5 zwar ein Integerwert ist, aber als  float(1) vorliegt.
          is_int('1') = false, da es sich hierbei um den Typ String handelt.

          Durch PHPs automatische Typumwandlung wird ein Vergleich auf Integer nicht gerade sehr einfach (wenn man nicht ctype_digit() verwendet):

          var_dump('1abc' == intval('1abc')); => true
          var_dump('1abc' == (int)'1abc'); => true

          oder auch

          var_dump('1x' == intval('1u')); => true
          var_dump('1x' == (int)'1u'); => true

          Auch der typstrikte Vergleich === ist hier nicht sehr brauchbar, wenn man in Strings enthaltene Zahlen prüfen will (z.B. Werte aus Eingabefeldern, die immer als String geliefert werden).

          var_dump('1' === intval('1')); => false

          Als Lösung plädiere ich auf einen erzwungenen Integerwert mittels intval() (liefert 0 oder die aus dem Argument gewonnene Zahl) oder eine Musterprüfung mittels ctype-Funktion oder RegExp.

          echo "$verabschiedung $name";

    2. Moin!

      Ich nehme da eine eigene Funktion, um ganz sicher zu gehen.

      Eigene  Funktionen sind nett, wenn es nichts vorgefertigtes gibt, aber für genau diesen Fall gibt es was vorgefertigtes!

        
      
      > function is_pos_id($id = 0)  
      > {  
      >     if(preg_match('/^[1-9][0-9]*$/', $id)) {  
      
      // Darf ein Integer keine 0 sein?  
      
      >         return true;  
      >     }  
      >     return false;  
      > }  
      
      

      Und jetzt die bessere, vorgefertigte Funktion:
      http://www.php.net/ctype_digit

      Alle Funktionen der ctype-Serie bieten relativ nützliche Testfunktionen. Und sie sind eigentlich in jeder PHP-Version ab 4.2.0 verfügbar (ab dann sind sie  standardmäßig aktiviert).

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Hallo!

        // Darf ein Integer keine 0 sein?

        Das stimmt natürlich!

        Und jetzt die bessere, vorgefertigte Funktion:
        http://www.php.net/ctype_digit

        Alle Funktionen der ctype-Serie bieten relativ nützliche Testfunktionen. [...]

        Danke schön! Auf die bin ich noch gar nicht gestoßen :-(!

        André Laugks

        --
        Die Frau geht, die Hilti bleibt!
  2. Wie wäre es mit $zahl==(int)$zahl?

    Gruß,
    Rekire

    1. was soll das sein?

      1. Hallo!

        was soll das sein?

        $zahl wir zu einem Integer.

        {link:http://de2.php.net/manual/de/language.types.integer.php] (Siehe in der Mitte der Seite.)

        André Laugks

        --
        Die Frau geht, die Hilti bleibt!
        1. Hi,

          $zahl wir zu einem Integer.

          $zahl kann am Anfang z.B. 1,5 enthalten mit (int) ein Typecast wird daraus ein e 1.
          Als Beispiel: 1,5==1 -> false

          Gruß,
          Rekire

          --
          sh:( fo:) ch:| rl:? br:^ n4:? ie:{ mo:} va:} de:> zu:| fl:{ ss:) ls:# js:)
  3. Hallo!

    wie kann ich prfen ob ein Integer ganzzahlig ist? ohen punkt komma usw? Einfach eine Zahle oder mehrere Zahlen in Folge aber nix anderes?

    Da gibt es nichts zu überprüfen! Integer ist laut Definition immer ganzzahlig!

    SCNR! :)

    Andy