PHP-Funktionen json_encode Problem mit dem array-Schlüssel 0
Ich habe ein problem mit Funktionen json_encode zu generieren, die einen json-kodierten string aus einem array.
Den Abschnitt des Arrays in Frage sieht wie folgt aus
RatingDistribution (Array, 11 elements)
0 (Array, 1 element)
0 (String, 3 characters ) 4.5
1 (Array, 1 element)
1 (String, 4 characters ) 11.9
2 (Array, 1 element)
Sondern stellt diese in den string:
"RatingDistribution":[["4.5"],{"1":"11.9"},
Ich würde erwarten, dass dieses:
"RatingDistribution":[{"0":"4.5"},{"1":"11.9"},
Alles, was ich Tue, ist dieses:
$result = json_encode($array);
Habe ich etwas falsch gemacht oder brauche ich mehr code, um die Taste 0 ist vorhanden?
Cheers
Andy
- kannst du den php-code, wo du das array? oder print_r das array? Sieht aus wie Ihre forearch ist falsch.
- Ich denke, dass es Schrauben bis auf das zweite element (index 1), weil es sub-array beginnt als 1 und somit bekommt als string interpretiert-Taste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Ergebnis, das Sie bekommen sollte erwartet werden;
json_encode
erkennt, dass Sie nur mit den numerischen Tasten in das array, so bedeutet dies, dass auf ein array, anstatt ein Objekt im JSON-Format. Die meisten der Zeit, das ist genau das, was Sie tun möchten.Wenn Sie aus irgendeinem Grund nicht (warum?), in PHP >= 5.3 können Sie die
JSON_FORCE_OBJECT
Flagge um Ihre gewünschte Ausgabe:0
, das ist genug für die Heuristik, um zu entscheiden, "OK, das ist ein assoziatives array".Wenn Sie möchten, verwenden Sie ein array im json anstatt dann
JSON_FORCE_OBJECT
parameter können Sie einfach werfen array-Objekt.Problem:
Nicht das, was wir erwarten :
Lösung:
Cou kann versuchen zu werfen die array-Schlüssel, um ein string zum Beispiel mit strval oder (string).