2016-08-09 34 views
1

Wie drucken Sie die Ergebnisse von Google Entfernung Matrix iam drucken eine Ergebnisse wie diese bekommen:Wie die Google Distance Matrix Ergebnisse Json Daten

"rows" : [ 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "4,8 km", 
       "value" : 4820 
      }, 
      "duration" : { 
       "text" : "17 minutes", 
       "value" : 1038 
      }, 
      "status" : "OK" 
     }, 
     { 
      "distance" : { 
       "text" : "11,1 km", 
       "value" : 11064 
      }, 
      "duration" : { 
       "text" : "25 minutes", 
       "value" : 1506 
      }, 
      "status" : "OK" 
     } 
    ] 
    } 
], 

und meine Php-Code Der Ausgang ist

$json = file_get_contents($url); 
$result = json_decode($json, true); 
for($i=0; $i<count($result['rows']); $i++) { 

    echo "Kilometers " . $result['rows'][$i]["elements"][$i]['distance']['text']; 

} 
drucken

.Bitte Hilfe

Antwort

1

Vorausgesetzt, dass Sie nicht alle Antwort enthalten, die Methode Invelled in den Abruf der Daten noch die endgültige gewünschte Ausgabe ist es schwierig zu beantworten, aber ich hoffe th Im Folgenden wird erläutert, wie die Ausgabe gerendert wird.

Dieses Beispiel Daten aus den interwebs anstelle der Teilbeispielcode verwendet in der Frage gegeben - ein wenig rau vielleicht aber ...

$res='{ 
    "destination_addresses" : [ 
     "Commons Way, Bridgewater, NJ 08807, USA", 
     "Morris Turnpike, Short Hills, NJ 07078, USA", 
     "Monmouth Mall, Eatontown, NJ 07724, USA", 
     "Garden State Plaza Blvd, Paramus, NJ 07652, USA", 
     "Newport Centre Mall, Jersey City, NJ 07302, USA" 
    ], 
    "origin_addresses" : [ "75 Ninth Ave, New York, NY 10011, USA" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "68.8 km", 
        "value" : 68781 
       }, 
       "duration" : { 
        "text" : "56 mins", 
        "value" : 3334 
       }, 
       "duration_in_traffic" : { 
        "text" : "1 hour 1 min", 
        "value" : 3687 
       }, 
       "status" : "OK" 
      }, 
      { 
       "distance" : { 
        "text" : "34.8 km", 
        "value" : 34806 
       }, 
       "duration" : { 
        "text" : "36 mins", 
        "value" : 2138 
       }, 
       "duration_in_traffic" : { 
        "text" : "41 mins", 
        "value" : 2487 
       }, 
       "status" : "OK" 
      }, 
      { 
       "distance" : { 
        "text" : "86.3 km", 
        "value" : 86322 
       }, 
       "duration" : { 
        "text" : "1 hour 6 mins", 
        "value" : 3930 
       }, 
       "duration_in_traffic" : { 
        "text" : "1 hour 7 mins", 
        "value" : 4044 
       }, 
       "status" : "OK" 
      }, 
      { 
       "distance" : { 
        "text" : "32.3 km", 
        "value" : 32278 
       }, 
       "duration" : { 
        "text" : "33 mins", 
        "value" : 2009 
       }, 
       "duration_in_traffic" : { 
        "text" : "35 mins", 
        "value" : 2082 
       }, 
       "status" : "OK" 
      }, 
      { 
       "distance" : { 
        "text" : "6.9 km", 
        "value" : 6879 
       }, 
       "duration" : { 
        "text" : "19 mins", 
        "value" : 1113 
       }, 
       "duration_in_traffic" : { 
        "text" : "24 mins", 
        "value" : 1444 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
}'; 

/* return as an object for easier notation */ 
$json=json_decode($res, false); 
$origins = $json->origin_addresses; 
$destinations=$json->destination_addresses; 
/* if there are multiple rows, use a loop and `$rows[$i]` etc */ 
$elements=$json->rows[0]->elements; 
foreach($elements as $i => $obj){ 

    echo ' 
    <div> 
     <h5>From: '.$origins[ 0 ].' to '.$destinations[ $i ].'</h5> 
     Distance: '.$obj->distance->text.', 
     Duration:'.$obj->duration->text.', 
     In traffic: '.$obj->duration_in_traffic->text.', 
     Status: '.$obj->status.' 
    </div>'; 
} 
+0

Danke, perfekt arbeiten .. – user3232285

0

Hier ist ein Beispiel einer verschachtelten foreach verwenden, ist dies nicht der einzige Möglichkeit, die Ausgabe zu rendern, aber es funktioniert.

$json = file_get_contents($url); 

$result = json_decode($json, true); 

foreach ($result['rows'][0] as $elements => $element) { 

    foreach ($element as $key => $value) { 
     echo $value['distance']['text']; 
     echo $value['duration']['text']; 
     echo $value['status']; 

     echo '<br>'; 
    } 
} 

Alles, was wir tun, ist ein mehrdimensionales Array Zugriff auf $ Schlüssel => Wert $ und dann $ Wert [$ key] Notation ... Ich würde einen Crash-Kurs auf vorschlagen, wie Arrays in PHP zu handhaben Dieses ist großartig: https://www.youtube.com/watch?v=57y5maglayQ

Sie können auch die Gesamtstruktur Ihres Arrays betrachten, indem Sie echo '<pre>', var_dump($result), '</pre>;' schreiben, die Ihr Array => Schlüsselpaare zeigt.

+0

Vielen Dank für die Hilfe .. – user3232285