Numerischer String: Interger oder Double?

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

  • Numerischer String: Interger oder Double?

    Hallo Leute!

    Ich habe eine Datenbank, in der ich sowohl strings als auch integer und doubles in einer Text-Spalte abspeichern muss. Beim Auslesen habe ich nur das PRoblem, dass ich zwar mit is_numeric() zwischen strings und numerischen strings unterscheiden kann, bei diesen aber nicht zwischen integer und double. Ich müsste aber die Typen wieder entsprechend umwandeln.
    PHP-Code:
    $str '0.123';

    echo (int) 
    $str// --> 0 und nicht 0.123 
    Wie kann ich die Typen korrekt umwandeln?

    arrays sind klasse

  • #2
    wicked..

    is_int() => intval()
    is_float() => floatval()
    etc.?

    Kommentar


    • #3
      *vordenkopfschlag*

      EDIT:
      Nein, so simpel ist es doch nicht!
      Die Variable liegt als Typ string vor, weswegen man nicht mit is_int() oder is_float() arbeiten kann.

      Nebenfrage:
      $str = (int) $str;
      $str = intval($str);
      Welche Umwandlungsmethodik ist vorzuziehen?
      Zuletzt geändert von Maranello-550; 26.09.2005, 17:52.
      arrays sind klasse

      Kommentar


      • #4
        man kann ja schummeln
        PHP-Code:
        is_float($foo+0
        ich nutze immer intval(), aber ich glaube, es macht keinen unterschied.

        Kommentar


        • #5
          Danke
          arrays sind klasse

          Kommentar


          • #6
            das ist natürlich ein workaround, sowas mag ich selbst nicht, aber wenn jemandem was besseres einfällt...

            evtl. vorher auf is_numeric() prüfen, damit das "+0" sinn ergibt.

            Kommentar


            • #7
              Also ich habe für solche Dinge eigene Funktionen

              z.B.:
              PHP-Code:
              function is_uint($input) {
                  
              $input '' $input;
                  if(
              strlen($input) == 0)
                      return 
              false;
                  for(
              $i 0$i strlen($input); $i++) {
                      if((
              ord($input[$i]) < 48) || (ord($input[$i]) > 57))
                          return 
              false;
                  }
                  return 
              true;

              Kommentar


              • #8
                wieder das rad neu erfinden?

                was du mit is_uint() testest, kann ich absolut genau so mit
                PHP-Code:
                is_int($x) && $x >= 
                testen.

                aber lies dir die frage noch mal durch - es ging um etwas anderes.

                Kommentar


                • #9
                  PHP-Code:
                  function is_strInt($data){
                      
                  $data strtolower($data);
                      if(
                  is_numeric($data) && !strpos($data,".") && !strpos($data"e") && !strpos($data,"x"))
                      {
                             
                  //ist ein Integer
                             
                  return 'int';
                      }
                      elseif(
                  is_numeric($data) && strpos($data,".") && !strpos($data,'e') && !strpos($data,'x'))
                      {
                              
                  //is ein float
                              
                  return 'float';
                      }
                      else
                      {
                              return 
                  false;
                      }


                  Vllt könnte das helfen....

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Original geschrieben von penizillin
                    wieder das rad neu erfinden?

                    was du mit is_uint() testest, kann ich absolut genau so mit
                    PHP-Code:
                    is_int($x) && $x >= 
                    testen.

                    aber lies dir die frage noch mal durch - es ging um etwas anderes.
                    Das Rad vielleicht neu erfunden, vielleicht auch nicht. Ich brauch nicht zwei Teilausdrücke um zu prüfen ob es UNSIGNED int ist.

                    Und auch wenn es um etwas anderes gegangen ist. Die Funktion umbenannt, nach dem Minuszeichen gefragt und dem Punkt und schon ist es diesem Thread zugeschnitten. Ich wollte ja nur ein Beispiel zeigen.

                    Aber in diesem Forum wird man sogar angefickt wenn man jemandem einen Rat geben möchte. Falls ich im Profil meinem Account nicht löschen kann, so tut das bitte für mich. Ist ja echt nicht auszuhalten, wie sich hier einige "höhere Tiere" verhalten.

                    Kommentar


                    • #11
                      bleib mal auf dem boden und achte auf deine ausdrucksweise, bitte.

                      ich habe lediglich bemerkt, dass deine antwort nicht zu der frage passt. und deinen code habe ich gern kritisiert, weil es redundanter unfug ist. du erfindest ja auch nicht myEcho($str) und myPlus($a, $b) neu, oder?

                      dasss du nur einen ausdruck zum prüfen brauchst ist ein sehr schwaches argument, wenn man bedenkt, dass dein code eine ganze runde mehr prozessorzeit und speicher braucht.

                      Kommentar


                      • #12
                        PHP-Code:
                        $value '10';
                        if(
                        is_int($value) && $value >= 0)
                            echo(
                        'Unsigned int!');
                        else
                            echo(
                        'Kein unsigned int!'); 
                        Die Ausgabe dürfte für dich klar sein. Und für meine Fälle ist soetwas nicht zu gebrauchen. Zum Beispiel wenn ich durch Benutzereingabe (get oder post) etwas nach einer ID löschen möchte oder so...

                        Kommentar


                        • #13
                          deswegen haben wir mit Maranello-550 auch von der typenkonvertierung geredet. deine funktion is_uint() macht es auch nicht, sie prüft nur, ob ein string aus zahlen besteht.

                          Kommentar


                          • #14
                            Vorschlag zur Güte:
                            PHP-Code:
                            function is_uint($input) {
                              return (string)
                            $input == (string)max(0, (int)$input);

                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar

                            Lädt...
                            X