Ankündigung

Einklappen
Keine Ankündigung bisher.

is_int in for-Schleife

Einklappen

Neue Werbung 2019

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

  • is_int in for-Schleife

    Code:
    <?php
    
    $simMinute = 1;
    $minutes = 20;
    $match = 0;
    
    
            for ($simMinute = 1; $simMinute <= $minutes; $simMinute++) {
                $match = $match + 0.2;
                echo $match."     ";
            if (is_int($match)){
                echo $match." ist eine Ganzzahl";
    
            }
            }
    Ich möchte eine Funktion nur ausführen, wenn der Wert einer ganzzahl entspricht. Der Wert match soll immer um 0.2 erhöht werden. D.h. bei 1,2,3,4,5,6 usw. soll dann die mit $match verbundene Funktion ausgeführt werden. Aber leider liefert is_int kein Ergebnis zurück.

    Setze ich allternativ $match == 1 in die if-abfrage funzt es.


  • #2

    0.2 ist auch kein Integer. 1.0 ist auch kein Integer. Was du wahrscheinlich suchst ist Modulo, damit kannst du den Rest einder Division zurück bekommen. if ($match % 1 === 0)

    Kommentar


    • #3
      is_int() prüft nicht, ob der Wert eine Ganzzahl ist, sondern ob der Wert den Typ Integer hat.

      PHP-Code:
      if (round($number) === $number) {
          echo 
      $number ' ist eine Ganzzahl';

      Kommentar


      • #4
        Zitat von hellbringer Beitrag anzeigen
        is_int() prüft nicht, ob der Wert eine Ganzzahl ist, sondern ob der Wert den Typ Integer hat.

        PHP-Code:
        if (round($number) === $number) {
        echo 
        $number ' ist eine Ganzzahl';

        Müsste dann nicht bei meinem Beispiel auch für den Wert 2 "2 ist eine Ganzzahl" kommen?

        http://sandbox.onlinephpfunctions.co...4ca82e2d280b2f

        Kommentar


        • #5
          Da wäre auch das Problem sichtbar:

          PHP-Code:
          $simMinute 1;
          $minutes 20;
          $match 0.0;  
          for (
          $simMinute 1$simMinute <= $minutes$simMinute++) {    
            
          match += 0.2;    
            
          var_dump($match);    
            
          var_dump(round($match) === $matchround($match), $match);    
            
          var_export(round($match));    
            
          var_export($match);    
            echo 
          '<br>';    
            if (
          round($match) === round($match1)){        
              echo 
          $match." ist eine Ganzzahl<br>";    
            }

          Kommentar


          • #6
            PHP-Code:
            if ( is_numeric($value) && strpos((string)$value,'.') === false ){
                    echo 
            ' ist eine Ganzzahl';
                } 
            Alles andere könnte zu falschen Ergebnissen führen.

            Test
            PHP-Code:
            $values = array(23"23"23.5"23.5""" ,,"0" ,-23nulltruefalse);

            foreach (
            $values as $value) {
                
            var_dump($value);    
                if ( (string)(int)
            $value === (string)$value ){
                    echo 
            ' ist mit (str) eine Ganzzahl'"<br>\n";
                }
                if ( 
            $value === ){
                    echo 
            ' ist mit modulo eine Ganzzahl'"<br>\n";
                }
                if ( 
            floor($value) == $value ){
                    echo 
            ' ist mit floor eine Ganzzahl'"<br>\n";
                }
                if ( 
            ctype_digit((string)$value) ){
                    echo 
            ' ist mit ctype_digit eine Ganzzahl'"<br>\n";
                }
                if ( 
            is_numeric($value) && floor($value) == $value ){
                    echo 
            ' ist mit is_numeric und floor eine Ganzzahl'"<br>\n";
                }
                if ( 
            is_numeric($value) && (string)$value === (string)(int)$value ){
                    echo 
            ' ist mit stringvergleich eine Ganzzahl'"<br>\n";
                }
                if (
            round($value) === round($value1)){
                    echo 
            ' ist mit round eine Ganzzahl'"<br>\n";
                }
                if ( 
            is_numeric($value) && strpos((string)$value,'.') === false ){
                    echo 
            ' ist mit strpos eine Ganzzahl'"<br>\n";
                }


            Kommentar


            • #7
              PHP-Code:
              $values = array("123e-3"); 
              Ausgabe:
              Code:
              string(6) "123e-3"
               ist mit modulo eine Ganzzahl
              
               ist mit strpos eine Ganzzahl

              Kommentar


              • #8
                hmm. Das ist ja nicht so gut.

                Kommentar

                Lädt...
                X