Dred: String to Float -- Datentypenkonvertierung

Hey, ich habe mir eine kleine Funktion geschrieben, die mir (wenn möglich) Strings zu Float, konvertiert oder sogar zu Integer, wenn dabei der Wert gleichbleibt:

private function ConvertDataType($value){  
  	  	  	  
    if(floatval($value) != 0)                          $value = floatval($value);  
    if(is_float($value) && ($value == intval($value))) $value = intval($value);  
  	  
    return $value;  
  
  }

Leider konvertiert er mir nicht "0.00000e+000", da dann die erste Bedingung nicht erfüllt ist.

Wie kann ich diesen Fall abdecken, ohne das er mir Strings immer nullt?

Grüße,Dred

  1. Warum prüfst du nicht gleich erst mal mit is_float, obs überhaupt ne Zahl ist?

    1. Hi!

      Warum prüfst du nicht gleich erst mal mit is_float, obs überhaupt ne Zahl ist?

      is_float() macht nur eine Typprüfung und erkennt keine Zahlen in Strings. Das kann nur is_numeric().

      Lo!

  2. Wie kann ich diesen Fall abdecken, ohne das er mir Strings immer nullt?

    Eine öfters gesehene Lösung:

      
    function typecastNumericString($value) {  
      if (is_string($value) && is_numeric($value)) {  
        $fval  = floatval($value);  
        $ival  = intval($value);  
        $value = ($ival == $fval) ? $ival : $fval;  
      }  
      return $value;  
    }