2017-11-10 3 views
0

Ich arbeite in PHP und muss ein JSON-Dokument im folgenden Format (unten) exportieren.Wie strukturiere ich Daten in PHP, um das richtige JSON-Ergebnis zu erhalten?

Ich weiß, wie man den tatsächlichen Export mit file_put_contents($data_file, json_encode($json_array)); macht, aber ich kämpfe mit welchem ​​Format ich brauche, um die $ json_array in die gewünschten Ergebnisse zu erzielen.

ich die letzte JSON-Datei benötigen wie folgt formatiert werden:

{ 
    "2016": [ 
     { 
     "date": "2016/01/01", 
     "close": 837 
     }, 
     { 
     "date": "2016/12/01", 
     "close": 769 
     } 
    ], 
    "2015": [ 
     { 
     "date": "2015/01/01", 
     "close": 637 
     }, 
     { 
     "date": "2015/12/01", 
     "close": 669 
     } 
    ], 
    "2014": [ 
     { 
     "date": "2014/01/01", 
     "close": 537 
     }, 
     { 
     "date": "2014/12/01", 
     "close": 569 
     } 
    ] 
} 

dies erreicht wird durch eine Anordnung mit 3 Schlüsseln zu exportieren, die jeweils ein mehrdimensionales Array enthält? Oder ein Array von Objekten eines bestimmten Typs?

Vielleicht überschätze ich das, aber ich habe dieses Problem den ganzen Tag bearbeitet und konnte nicht die gewünschten Ergebnisse erzielen.

Für mich sieht die Struktur wie ein Array aus; mit dem (ersten) Schlüssel von 2016 und einem Wert eines Arrays, aber was ist dann in diesem Array?

+0

Blick auf 'print_r (json_decode (your_example, true));' – splash58

+0

@ splash58 Der OP fragt, wie das zu formatieren PHP-Array, bevor es _encoded_ ist, nicht wie man den JSON dekodiert. –

+1

@MagnusEriksson Also: https://eval.in/896860 – splash58

Antwort

1

Es ist ziemlich einfach. ein Array in PHP mit den gleichen leves und Schlüssel einfach erstellen:

$data = [ 
    '2016' => [ 
     [ 
      "date" => "2016/01/01", 
      "close" => 837 
     ], 
     [ 
      "date" => "2016/12/01", 
      "close" => 769 
     ], 
    ],  
    '2015' => [ 
     [ 
      "date" => "2015/01/01", 
      "close" => 637 
     ], 
     [ 
      "date" => "2015/12/01", 
      "close" => 669 
     ], 
    ],  
    // ... and so on 
]; 

Demo: https://3v4l.org/cfHqs

+0

Das sieht gut aus. Das Einzige, woran ich immer noch ein wenig verwirrt bin, ist: Wie würde ich das schaffen, während ich durch ein Array laufe, das für jeden Monat das Datum und die Schlusskurse hat? – Keith

+0

@MagnusEriksson weil Sie OP geben die Lösung aber keine Methode zu lösen, jetzt werden Sie den Code schreiben :) – splash58

+0

@Keith - Was while loop? Wann? Um das Array zu erstellen? Um codiertes Ergebnis zu verwenden? Ich sehe keine Erwähnung über irgendwelche Schleifen in Ihrer Frage? –

Verwandte Themen