2016-07-16 6 views
1

Ich benutze die MODX cms, um Daten von einer dritten Partei auszugeben, und ich bin ratlos, wie man ein verschachteltes Array zurückgibt, momentan bekomme ich nur das erste Array oder NULL zurück. Hier ist ein Beispiel für den Code ich verwende:Datastream Array Returning Only Erster Wert

$datastream = '[{"id":57, 
"offer_info":{"offer_headline":"Main Offer Headline", 
"published_title":"Displayed Main Title"}, 

// My issue is here with the nested array 
"service_categories":[{"service_category_code":"D", 
"headline":"My Headline for D", 
"midline":"Middle copy", 
"footline":"Footer copy for D"}, 

{"service_category_code":"T", 
"headline":"My Headline for T", 
"image":"image.svg", 
"footline":"Footer copy for T"}]}]'; 

$output_json = json_decode($datastream); 
$output_json = json_decode($datastream, true); // this returns null for everything 

foreach($output_json as $component) { 
$productid = $component->id; // this returns ok 
$offer_headline = $component->offer_info->offer_headline; // this returns ok 
$published_title = $component->offer_info->published_title; // this returns ok 

$service_categories_category_code = $component->service_categories[0]->service_category_code; // this only returns first value 

$service_categories_category_code = $component->service_categories->service_category_code; // this returns NULL 

var_dump($service_categories_category_code); 

Ich bin in der Lage, die Werte zu übernehmen, die in Ordnung zurückkehren und sie in meinem Code, aber das verschachtelte Array wird nur der erste Wert zurückgegeben wird, und ich bin nicht sicher, ob ich das richtig mache:

if ($service_categories_category_code = "D") { 
    $d_details_headline = $component->service_categories[0]->headline; 
    $d_details_midline = $component->service_categories[0]->midline; 
    $d_footline = $component->service_categories[0]->footline; 
} elseif ($service_categories_category_code = "T") { 
    $t_details_headline = $component->service_categories[0]->headline; 
    $t_details_image = $component->service_categories[0]->image; 
    $t_details_footline = $component->service_categories[0]->footline; 
}; 

für jede Hilfe im Voraus Vielen Dank

Antwort

1

hoffe das hilft dir:

 <?php 

     $datastream = '[{"id":57,"offer_info":{"offer_headline":"Main Offer 
     Headline","published_title":"Displayed Main 
     Title"},"service_categories":[{"service_category_code":"D", 
     "headline":"My Headline for D","midline":"Middle 
     copy","footline":"Footer copy for D"},{"service_category_code":"T", 
     "headline":"My Headline for T", 
     "image":"image.svg", 
     "footline":"Footer copy for T"}]}]'; 

     $output_json = json_decode($datastream); 
     //$output_json = json_decode($datastream, true); // this returns null for everything 
     $data = array(); 
     foreach($output_json as $component) { 
     $productid = $component->id; // this returns ok 
     $offer_headline = $component->offer_info->offer_headline; // this returns ok 
     $published_title = $component->offer_info->published_title; // this returns ok 
     $data['productid'] = $component->id; 
     $data['offer_info']['offer_headline'] = $component->offer_info->offer_headline; 
     $data['offer_info']['published_title'] = $component->offer_info->published_title; 
     foreach ($component->service_categories as $comp) { 
      if ($comp->service_category_code == 'D') { 
      $data['D']['service_category_code'] = $comp->service_category_code; 
      $data['D']['headline'] = $comp->headline; 
      $data['D']['midline'] = $comp->midline; 
      $data['D']['footline'] = $comp->footline; 
     } elseif ($comp->service_category_code == 'T') { 
      $data['T']['service_category_code'] = $comp->service_category_code; 
      $data['T']['headline'] = $comp->headline; 
      $data['T']['image'] = $comp->headline; 
      $data['T']['footline'] = $comp->footline; 
     } 
    } 

    print_r($data); 
} 
+0

Vielen Dank! Dies brachte mich auf den richtigen Weg, um das Problem herauszufinden, ich musste nur ein paar Zeilen mehr hinzufügen, aber das ist genau das, was ich brauchte – Robert

+0

froh, dass es Ihnen hilft! Glückliche Kodierung – pradeep