2016-08-09 29 views
1

Ich habe die letzten 2 Tage gekämpft, um diese Arbeit zu machen, aber ich kann nicht auf den Grund davon gehen. Ich muss alle .json-Dateien von einem Ordner lesen und das Ergebnis zurückbekommen, damit ich meine "Statistiken" machen kann, die in diesen .json-Dateien gespeichert werden.Zend2 lesen Sie alle JSON-Dateien Inhalt und Ergebnisse zurück

Wenn ich print_r() verwende; Im Controller bekomme ich Arrays mit dem Inhalt aus den Dateien, was genau das ist, was ich will, aber wenn ich es an die View weitergeben will, bekomme ich nur 1 Array, und das ist das erste, egal was ich probiert habe. Ich habe auch versucht, mit JsonModel() zurückzukehren, aber kein Erfolg, ich bekomme das gleiche Ergebnis.

Dies ist die Funktion, die ich die Dateien lesen versucht, mit und hoffentlich das Ergebnis zurück:

public function getJSONAction(){ 

     $my_array_data = array(); 

     //$reader = new \Zend\Config\Reader\Json(); 

     //$data = $reader->fromFile('./data/tti/video.json'); 

     $files = glob('./data/stats/*.{json,txt}', GLOB_BRACE); 

     foreach($files as $file) { 

      //$data = array($reader->fromFile($file)); 

      $data = file_get_contents($file); 

      $my_array_data = json_decode($data, TRUE); 

      $view = new JsonModel (array(

        'my_array_data' => $my_array_data 
      )); 
     } 

     $view->setTerminal(true); 

     return $view; 
    } 

ich viele Möglichkeiten ausprobiert, aber ich kann immer noch auf der rechten Seite es nicht funktioniert, kann mir jemand bitte Punkt Richtung? Oder ein Beispiel wäre noch hilfreicher.

Vielen Dank.

EDIT:

Ich habe es funktioniert ... es meinen dummen Fehler war, sollte ich ** my_array_data $ gesetzt habe [] **

Danke für die versuchen zu helfen.

+0

Im Moment erstellen Sie ein neues Array und View-Modell in jeder Schleife Iteration, die ich glaube nicht, was Sie vorhatten? –

+0

@TimFountain - ja es ist wahr, aber ich bin nur stecken und ich weiß nicht, was zu tun ist ... Ich muss wirklich diese Dateien lesen und die Werte in meine Sicht bekommen ... –

Antwort

0

Vielleicht versuchen einmal so:

public function getJSONAction(){ 

    $my_array_data = array(); 

    $reader = new \Zend\Config\Reader\Json(); 

    $files = glob('./data/stats/*.{json,txt}', GLOB_BRACE); 

    foreach($files as $file) { 

     $data = array($reader->fromFile($file)); 

     $data = file_get_contents($file); 

     $my_array_data = array_merge($my_array_data, json_decode($data, TRUE)); 

    } 

    $view = new JsonModel (array(

     'my_array_data' => $my_array_data 
    )); 

    $view->setTerminal(true); 

    return $view; 
} 

Der Hauptunterschied ist, die verschiedene Datenfelder in eine Zusammenführung und dann in einem JsonModel das fusionierte Ergebnis zurück.

+0

Danke, ich habe versucht, aber ich bekomme immer noch 1 Ergebnis .. –

+0

@NorbertBoros Vielleicht verstehe ich dein Problem falsch. Was meinst du mit 1 Ergebnis? Können Sie einige Details zum erwarteten Ergebnis und zum aktuellen Ergebnis teilen? – Wilt

+0

Ja, die ganze Zeit über gab es 1 Array zurück, weil ich $ my_array_data [] beim Speichern in das Array geschrieben haben sollte ... ein dummer, lahmer Fehler von mir, tut mir so leid. Trotzdem danke! –