2016-03-30 17 views
0

Ich habe ein json decodiert, dass wie folgt aussieht:PHP - Parsing Json richtig

[Guadeloupe] => stdClass Object 
    (
     [579650] => stdClass Object 
      (
       [name] => Carat 
       [postal_code] => 97139 
       [lat] => 16,275890246307 
       [lng] => -61,511925458908 
       [url] => 579650-carat 
       [pos_type_has_page] => t 
      ) 
     [579651] => stdClass Object 
      (
       [name] => Carat 
       [postal_code] => 97139 
       [lat] => 16,275890246307 
       [lng] => -61,511925458908 
       [url] => 579650-carat 
       [pos_type_has_page] => t 
      ) 
     [579655] => stdClass Object 
      (
       [name] => Carat 
       [postal_code] => 97139 
       [lat] => 16,275890246307 
       [lng] => -61,511925458908 
       [url] => 579650-carat 
       [pos_type_has_page] => t 
      ) 
    ) 

[Martinique] => stdClass Object 
    (
     [154161] => stdClass Object 
      (
       [name] => Grain D'Or 
       [postal_code] => 97232 
       [lat] => 14,619419176343 
       [lng] => -61,020416975021 
       [url] => 154161-grain-dor- 
       [pos_type_has_page] => t 
      ) 

    ) 

[Guyane française] => stdClass Object 
    (
     [154146] => stdClass Object 
      (
       [name] => Bijouterie Buirette 
       [postal_code] => 97300 
       [lat] => 4,935763 
       [lng] => -52,333749 
       [url] => 154146-bijouterie-buirette 
       [pos_type_has_page] => t 
      ) 

    ) 

eigentlich ich habe keine Ahnung, wie Werte von um es richtig zu bekommen, ohne viele Schleife foreach ($ Taste => $ Wert), möchte ich diese Daten erhalten:

$ Land, $ Name, $ Lat, $ Lng und speichern Sie sie in Array.

$store = array(
    'country'=>$country, 
    'name'=>$name, 
    'lat'=>$lat, 
    'lng '=>$lng , 
) 

Hier ist meine aktuellen Code:

foreach($content as $store) { 
      $store = (array) $store; 

      foreach($store as $key => $value) { 
       $country = $key; 
       $value = (array) $value; 
       foreach($value as $key1 => $data) { 
        $title = $data->name; 
        $coordlat = $data->lat; 
        $coordlng = $data->lng;  

        $store_data = array(
         'name'=>$title, 
         'latitude'=>$coordlat, 
         'longitude'=>$coordlng, 
         'original_country'=>$country, 
        ); 
       } 
      } 
     } 

Vielen Dank für

+1

Ihre ersten 2 foreach Schleifen sind genug, verwenden Sie einfach $ Wert-> name und so eins. Außerdem müssen Sie Ihre Objekte nicht in Arrays umwandeln. – Rizier123

+0

Land könnte viele Geschäfte haben, habe ich meine erste Nachricht bearbeitet, so $ Wert-> Name wird es nicht funktionieren Ich denke, – Zeta

+0

Es sollte immer noch funktionieren. – Rizier123

Antwort

0
$allStore = array();  
foreach($content as $storeArray) { 

    foreach($storeArray as $key => $value) { 
       $country = $key; 
       $name = $value->name; 
       $latitude = $value->lat; 
       $longitude = $value->lng; 
       $store = array(
         'name'=>$name, 
        'latitude'=>$latitude, 
        'longitude'=>$longitude, 
        'country'=>$country 
       ) 



      } 

//if you want, you can actually now store each of the data formatted out into another array i.e multidimensional array 

     $allStore[] = $store; 
     } 
0

Versuchen Sie eine Option 'Assoc' = true in json_decode helfen() Funktion. Es wird Objekte in Arrays umwandeln, die in PHP einfacher zu handhaben sind. Dann können Sie Ihre Daten wie folgt abrufen:

$retrieved_data = json_decode($json_data,true); 
$name = $retrieved_data['Martinique']['154161']['name'];