Hallo Felix,
…nicht als numerische Strings, sondern als echte Integer-Werte kodieren:
[0:[347,[1:[10,0]]],1:[344,[1:[20,1],2:[30,0]]],3:[338,[1:[30,0]]]]
So hatte ich mir das auch vorgestellt.
Da ich nicht weiß, wie Du Dein Array überhaupt erstellst, weiß ich nicht, was
json_encode
als Daten zur Verarbeitung erhält. Aber genau da sollte die Ursache für Dein Problem liegen.
Es ist ein Array, das ich per $toreArray = [] erzeuge und dann mit Daten aus MySQL fülle. Wenn ich das Array per var_dump anzeige, sieht das so aus:
array(3) {
[0]=>
array(2) {
[0]=>
int(347)
[1]=>
array(1) {
[1]=>
array(2) {
[0]=>
int(10)
[1]=>
int(0)
}
}
}
[1]=>
array(2) {
[0]=>
int(344)
[1]=>
array(2) {
[1]=>
array(2) {
[0]=>
int(20)
[1]=>
int(1)
}
[2]=>
array(2) {
[0]=>
int(30)
[1]=>
int(0)
}
}
}
[3]=>
array(2) {
[0]=>
int(338)
[1]=>
array(1) {
[1]=>
array(2) {
[0]=>
int(30)
[1]=>
int(0)
}
}
}
}
Ohne weitere Zwischenschritte ist die direkt folgende Ausgabe per json_encode() folgende:
"{"0":[347,{"1":[10,0]}],"1":[344,{"1":[20,1],"2":[30,0]}],"3":[338,{"1":[30,0]}]}"
Von den optionalen Parametern auf https://www.php.net/manual/en/function.json-encode.php sieht JSON_OBJECT_AS_ARRAY aus, als würde es machen, was ich will. Aber auch mit json_encode($toreArray, JSON_OBJECT_AS_ARRAY) bleibt der JSON-String unverändert.
Schöne Grüße
Nico