2017-08-21 2 views
2

Ich versuche, auf Daten zuzugreifen, die über Verzeichnisdienste von einer Datenbank erzeugt werden, die ICS-Dateien erzeugt, die durch JSON Kodierung zu einer Web site gesendet werden.Greifen Sie auf Daten in JSON über PHP zu

Es werden mehrere Dateien oder unbekannte Mengen generiert. Mein Hauptproblem an diesem Punkt ist, muss ich die Informationen aus den JSON-Dateien zurück in ics-Dateien analysieren.

Woran ich gerade festhalte, ist das Lesen der Informationen in den JSON-Dateien.

Die JSON-Dateien sind so etwas wie dieses:

{ 
    "SMSDATA": { 
     "date": 20170817062448, 
     "person": { 
      "data":[{ 
      "person": 321654978, 
      "information": "person information" 
      },{ 
      "person": 3216549, 
      "information": "person information" 
      }] 
}} 

Was ich versuche, ist tief zu graben zu tun und die person und information Daten in die ics-Datei.

Was ich im Moment in PHP muß einfach die Daten anzeigen, um zu sehen, ob ich die richtigen Daten am Zugriff ist:

$str = '../filename/test.json'; // The location of the files 
    $contents = file_get_contents($str); // get the information from the file 
    $decode = json_decode($contents, true); // Creates the JSON as an array 

    //array loop 
    foreach($decode as $key => $value){ 
    echo $value["person"]. " -> " . $value["information"]. "<br>"; // Should display the information needed 
    print_r ($value); // test dump of data 
} 

Ich bin mir bewusst, dass ich nicht tief genug bin zu graben. Ich fand diese Quelle sehr hilfreich: How do I extract data from JSON with PHP?, sowie Convert and Loop through JSON with PHP and JavaScript Arrays/Objects. Ich glaube auch, dass ICal Parser von großem Nutzen sein wird, aber nicht sicher, wie man es in diesem Stadium verwendet.

Ich möchte nur sicherstellen, dass ich die richtigen Daten für jetzt lese, dann wird der nächste Schritt sein, um die .ics-Dateien mit den Personen- und Informationsdaten zu erstellen.

Vielen Dank für Ihre Hilfe.

(BTW, habe ich nur PHP für ein paar Monate unter Verwendung von)

+0

Was ist Ihre Frage? Sieht für mich so aus, als ob du wahrscheinlich 'foreach' ($ decode ['SMSDATA'] ['person'] ['data'] als $ value) ' – Phil

+0

Sorry! Ich versuche "tief genug zu graben", um auf die Werte "Person" und "Information" zugreifen zu können. –

Antwort

3

Sie sind richtig, Sie sind auf dem richtigen Arraymitglied nicht an den Start der Schleife.

$contents = '{ 
     "SMSDATA": { 
      "date": 20170817062448, 
      "person": { 
       "data":[{ 
        "person": 321654978, 
        "information": "person information" 
       },{ 
        "person": 3216549, 
        "information": "person information" 
       }] 
      } 
    } 
}'; 

$decode = json_decode($contents, true); 
print_r($decode); 

foreach($decode['SMSDATA']['person']['data'] as $value){ 
    echo $value["person"]. " -> " . $value["information"]. "<br>"; 
} 

321654978 -> person information<br> 
3216549 -> person information<br> 
+0

Danke für Ihre Hilfe :-) Das macht alles Sinn, wie man in die JSON-Datei eingräbt! - Wie soll man durch die Dateien blättern und die 'Person'-Daten in ics-Dateien speichern? –

1

Zu allererst Ergebnisse, Ihre json ist Deformierte. Es gab eine fehlende Klammer. Hier

ist die richtige json:

{ 
    "SMSDATA": { 
    "date": 20170817062448, 
    "person": { 
     "data": [{ 
     "person": 321654978, 
     "information": "person information" 
     }, { 
     "person": 3216549, 
     "information": "person information" 
     }] 
    } 
    } 
} 

Und für die PHP-Datei, müssen Sie eine Schleife durch Array, aber da es sich um ein mehrdimensionales Array ist, wird es mehr als eine foreach benötigen. Ich fügte auch pre hinzu, um das Array anzuzeigen, das es richtig zurückgab, also ist es einfacher für Sie zu sehen, wie das Array aussieht. Hier ist die PHP-Datei:

<?php 

$str = 'test.json'; // The location of the files 
    $contents = file_get_contents($str); // get the information from the file 

    $decode = json_decode($contents, true); // Creates the JSON as an array 

    echo "<pre>".print_r($decode, true)."</pre>"; 


    foreach ($decode as $key => $value) { 
     echo $value["date"]."<br>"; 
     foreach ($value["person"] as $k => $val) { 
      foreach ($val as $index => $data) { 
       echo $data["person"]."<br>"; 
       echo $data["information"]."<br>"; 
      } 
     } 

    } 


?> 
+0

Vielen Dank dafür! Die JSON-Datei ist ~ 2 MB groß, es wurde etwas getrimmt :-) Ihre verschachtelten foreach-Loops haben es geschafft! Ich danke dir sehr! –

Verwandte Themen