Antwort an „Nico R.“ verfassen

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

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen