markknochen: json_decode wandelt INT Werte um?

Hallo, ich bekomme einen JSON-String aus einer API-Abfrage zurück, der enthält unter anderem ein "Feld"

"id":1070107173001

Wenn ich den String mit json_decode in eine PHP-Variable umwandle, dann wird aus 1070107173001 => 1.070107173E+12

und ich kann mit dem Wert nichts mehr anfangen.

Ich kann mir das eigentlich gar nicht vorstellen, warum json_decode den Wert so umwandelt - oder habe ich irgendetwas vergessen?

Danke

markknochen

  1. Hi,

    Wenn ich den String mit json_decode in eine PHP-Variable umwandle, dann wird aus 1070107173001 => 1.070107173E+12

    und ich kann mit dem Wert nichts mehr anfangen.

    Ich kann mir das eigentlich gar nicht vorstellen, warum json_decode den Wert so umwandelt - oder habe ich irgendetwas vergessen?

    Ist das Feld, welches json_decode erstellt, ein String, ein Float oder ein Integer-Feld (nutze var_dump, um dies herauszufinden).

    könnte sein, dass echo das einfach nur bei der Ausgabe umwandelt.

    Bis die Tage,
    Matti

    1. Ist das Feld, welches json_decode erstellt, ein String, ein Float oder ein Integer-Feld (nutze var_dump, um dies herauszufinden).

      Der JSON-String beginnt mit:

      string(1951) "{"items":[{"id":1070107173001,"name":" ...

      nach json_decode erhalte ich:

      ["id"]=>
            float(1.070107173E+12)

      Da ist es offenbar schon zu spät.

      Mark

      1. Hi,

        string(1951) "{"items":[{"id":1070107173001,"name":" ...

        nach json_decode erhalte ich:

        ["id"]=>
              float(1.070107173E+12)

        $x = '{"items":[{"id":1070107173001}]}';  
        var_dump(json_decode($x));  
        echo PHP_INT_MAX;
        

        Ausgabe:

        • auf einem 64-Bit-System:
        object(stdClass)#1 (1) {  
          ["items"]=>  
          array(1) {  
            [0]=>  
            object(stdClass)#2 (1) {  
              ["id"]=>  
              int(1070107173001)  
            }  
          }  
        }  
        9223372036854775807
        
        • auf einem 32-Bit-System:
        object(stdClass)#1 (1) {  
          ["items"]=>  
          array(1) {  
            [0]=>  
            object(stdClass)#2 (1) {  
              ["id"]=>  
              float(1070107173001)  
            }  
          }  
        }  
        2147483647
        

        Noch Fragen?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?