2016-07-16 1 views
1

Я использую MODX cms для вывода данных от третьего лица, и я не могу сказать, как вернуть вложенный массив, в настоящее время я получаю его только для возврата первого массива или NULL. Вот пример кода, который я использую:Datastream Array Возвращает только первое значение

$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); 

я в состоянии принимать значения, которые возвращаются в порядке, и разместить их в своем коде, но вложенный массив возвращает только первое значение, и я не уверен, если я делаю это правильно:

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; 
}; 

большое спасибо заранее за любую помощь

ответ

1

Надеюсь, что это поможет вам:

 <?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

спасибо! Это поставило меня на правильный путь, чтобы разобраться в проблеме, мне просто пришлось добавить еще пару строк, но это именно то, что мне нужно – Robert

+0

рада, что это вам поможет! Счастливое кодирование – pradeep

 Смежные вопросы

  • Нет связанных вопросов^_^