2016-05-17 7 views
-2

Ich versuche, einige JSON, die ich von einer API-Antwort erhalten, an eine E-Mail anzuhängen, und ich möchte den JSON in eine HTML-Tabelle ausgeben. Das Problem ist, dass die JSON-Antwort nicht so aussieht, als hätte ich schon einmal mit ihnen gearbeitet.Wie konsumiere ich diese JSON-Antwort?

$vs_getClickPath = wp_remote_get('url'); 
$clickPath_body = wp_remote_retrieve_body($vs_getClickPath); 
$notification['message'] .= $clickPath_body; 

Das gibt mir die folgenden:

[ 
    ["date\/time", "page name visited", "city", "region", "country", "company name\/isp", "identity", "search\/referral"], 
    ["2016-05-17 10:56:05", "Home Page", "Buffalo", "New York", "United States", "I-evolve Technology Services", "", ""] 
] 

Alle Schlüssel kommen zuerst in einem Array dann in einem anderen Array die Werte angezeigt. Der Versuch, mit Indizes zu arbeiten, bringt nur die einzelnen Zeichen, foreach funktioniert nicht. Ich habe versucht json_decode, aber es gibt nichts mit print_r oder var_dump.

Gibt es trotzdem, ich werde in der Lage sein, dies zu durchlaufen und die Daten in eine HTML-Tabelle ausgeben? Das erste Array wäre der Tabellenkopf und jedes Array danach die Tabellenzeilen.

+0

Gerade Schleife über die Tasten-Array und den Index, um den Wert in dem Werte-Array zu erhalten. Etwa so: 'foreach ($ result [0] als $ index => $ key) {$ value = $ result [1] [$ index]; var_dump ($ key, $ value); } '. –

+0

was brauchst du davon? –

+2

* "'Ich habe json_decode versucht, aber es gibt nichts mit print_r oder var_dump aus." * Zeigen Sie, was Sie versucht haben. –

Antwort

3

habe ich json_decode($str, true) und es kehrte ein Array, das mit gearbeitet werden kann:

$str = '[["date\/time","page name visited","city","region","country","company name\/isp","identity","search\/referral"],["2016-05-17 10:56:05","Home Page","Buffalo","New York","United States","I-evolve Technology Services","",""]]'; 
$json = json_decode($str, true); 
echo '<pre>'; 
print_r($json); 

kehrt

Array 
(
    [0] => Array 
     (
      [0] => date/time 
      [1] => page name visited 
      [2] => city 
      [3] => region 
      [4] => country 
      [5] => company name/isp 
      [6] => identity 
      [7] => search/referral 
     ) 

    [1] => Array 
     (
      [0] => 2016-05-17 10:56:05 
      [1] => Home Page 
      [2] => Buffalo 
      [3] => New York 
      [4] => United States 
      [5] => I-evolve Technology Services 
      [6] => 
      [7] => 
     ) 

) 

Einstellung true im Aufruf json_decode() macht kehrt die Funktion ein Array. Wenn Sie kein Array möchten, können Sie ein Abject zurückgeben, indem Sie die Option aus dem Aufruf herauslassen.

PHP's json_decode()

+0

Oh yeah .. das war es, was ich vorher probiert habe, aber ich habe immer "1" als Ausgabe zurückbekommen. Es scheint, dass es etwas mit Gravity Forms (das E-Mail-Plugin, das ich verwende) ist. Wenn ich versuche, print_r in der E-Mail-Nachricht zu verwenden, wird es verrückt. Entschuldigung, sollte das vor dem Posten – user985952

+0

@ user985952 gefangen haben: Wie versuchen Sie, 'print_r' zu verwenden? Sein zweiter Parameter steuert, ob er einen String zurückgibt oder ihn einfach ausgibt. –

+0

@Rocket Hazmat Ich versuche dies: $ clickPath_body = wp_remote_retrieve_body ($ vs_getClickPath); \t $ json = json_decode ($ clickPath_body, true); \t $ Benachrichtigung ['Nachricht']. = Print_r ($ json); – user985952

0

von Ihrem Ausgang, ist das Ergebnis ein Array von Arrays

[
[
"date\/time", "page name visited", "city", "region", "country", "company name\/isp", "identity", "search\/referral" ], [
"2016-05-17 10:56:05", "Home Page", "Buffalo", "New York", "United States", "I-evolve Technology Services", "", "" ] ]

Sie die Werte mit einer foreach in einem foreach finden cand.

foreach ($clickPath_body as $array) { foreach ($array as $string) { echo $string; } echo "<br>"; }