Bayer in Düsseldorf: '51.9606649' ist NICHT numerisch

Hallo,

ich bekomme aus einer GeocodierungsAPI diverse Zahlen zB. auch Lat und Lng. Ich habe mich die ganze Zeit gefragt warum ich diese Zahlen nicht Addieren kann.
Daher habe ich mir eine einfache IF Abfrage gebaut:

  
    if (is_numeric($lat)) {  
        echo "'{$lat}' ist numerisch", PHP_EOL;  
    } else {  
        echo "'{$lat}' ist NICHT numerisch", PHP_EOL;  
    }  

Hierbei kam heraus der Wert ist "nicht" numerisch. Auch ein Trim brachte keine Besserung. Hat jemand da Ideen?

Danke euer Düsseldorfer - Bayer

  1. $lat = (float) $lat;

    vielleicht so?

    Gruß
    VielleichT-Rex

    1. oder Versuchs mal mit $lat = floatval($lat);

      1. oder Versuchs mal mit $lat = floatval($lat);

        floatval() und das Typecasting mittels (float) machen exakt dasselbe - wenn das eine nicht funktioniert wird das andere ebenfalls nicht funktionieren:

        https://github.com/php/php-src/blob/642721b38a9c5ebf336c81027c0dafd6f9246bd6/ext/standard/type.c

        (float) Zeile 105
        floatval() Zeile 166

        Beides führt nur convert_to_double() aus - und das konvertiert so ziemlich alles, auch Objekte:

        https://github.com/php/php-src/blob/7713b8c2ac2d8fbacaf897ff0c0a202a7b7abf49/Zend/zend_operators.c
        Zeile 429

        1. floatval() und das Typecasting mittels (float) machen exakt dasselbe - wenn das eine nicht funktioniert wird das andere ebenfalls nicht funktionieren:

          ich kann nur aus meiner Erfahrung sprechen. Ich hatte schon den Fall das (float) nicht funktionierte aber floatval() schon.

          1. floatval() und das Typecasting mittels (float) machen exakt dasselbe - wenn das eine nicht funktioniert wird das andere ebenfalls nicht funktionieren:

            ich kann nur aus meiner Erfahrung sprechen. Ich hatte schon den Fall das (float) nicht funktionierte aber floatval() schon.

            Das ist aufgrund des PHP-Sourcescodes (anhand der aktuellen Version) nicht nachvollziehbar - afaik war das aber schon immer so.

        2. Tach!

          floatval() und das Typecasting mittels (float) machen exakt dasselbe - wenn das eine nicht funktioniert wird das andere ebenfalls nicht funktionieren:

          https://github.com/php/php-src/blob/642721b38a9c5ebf336c81027c0dafd6f9246bd6/ext/standard/type.c

          (float) Zeile 105
          floatval() Zeile 166

          Beides führt nur convert_to_double() aus - und das konvertiert so ziemlich alles, auch Objekte:

          Ja, aber das erste ist nicht der Typecast sondern die Funktion settype(). Ob da eine Verbindung zum Typecast besteht, kann ich in der Datei nicht erkennen. Besteht sie und wenn ja wo?

          dedlfix.

  2. Tach!

    Hierbei kam heraus der Wert ist "nicht" numerisch. Auch ein Trim brachte keine Besserung. Hat jemand da Ideen?

    Nicht nachvollziehbar. Was gibt var_dump($lat) aus?

    dedlfix.

  3. ich bekomme aus einer GeocodierungsAPI diverse Zahlen zB. auch Lat und Lng. Ich habe mich die ganze Zeit gefragt warum ich diese Zahlen nicht Addieren kann.

    Die Antwort ist üblicherweise in XML und wenn du das mit SimpleXML z.B. abarbeitest, hast du eine latte kleiner Objekt und diese sind natürlich nicht numerisch - die musst du erst explizit nach float casten.