PHP толкает массив в существующий массив

0

У меня есть файл php, который я использую для создания вывода JSON. Вы можете увидеть мой цикл в коде ниже:

foreach($objQueueData->event as $event){ 

            $output[] = array(
                "eventID" => (int)$event->trainingEventID,
                "eventTitle" => (string)$event->teTitle,
                "eventDescription" => (string)$event->teDesc,
                "eventSource" => (string)$event->teSource,
                "eventType" => (string)$event->teType,
                "eventMedium" => (string)$event->teMedium,
                "eventRequestor" => (string)$event->creatorFirst . ' ' . $event->creatorLast,
                "eventRequestorNTID" => (string)$event->creatorNTID,
                "eventRequestDate" => (string)$event->teCreated,
                "eventDirector" => (string)$event->teDirector,
                "eventTeammateImpact" => (string)$event->teTeammateImpact,
                "eventCustomerImpact" => (string)$event->teCustomerImpact,
                "eventComplexity" => (string)$event->teComplexity,
                "eventInitiativeID" => (int)$event->intID,
                "eventNeededBy" => (string)$event->teNeededBy
            );
            $impactedRegions = array();
            if(isset($event->regionalImpact->option)){
                foreach ($event->regionalImpact->option as $region) {
                    $impactedRegions[] = $region->impact;
                }
                array_push($output, $impactedRegions);
            }
        }
        // Set the content type to JSON  for jquery to understand
        header('Content-Type: text/json');

        // Print the response to the page
        print json_encode($output);         

Моя проблема связана со вторым массивом, impactedRegions. Это должно быть вспомогательный массив output но он не работает должным образом.

Я пытаюсь, чтобы он был отделен от output массива.

Вот как выглядит текущий вывод JSON:

    [

   {

      "eventID": 25,

      "eventTitle": "Monday",

      "eventDescription": "Testing Monday",

      "eventSource": "OE",

      "eventType": "New Hire",

      "eventMedium": "ILT",

      "eventRequestor": "Carl",

      "eventRequestorNTID": "ch123",

      "eventRequestDate": "Nov 17 2014  4:58PM",

      "eventDirector": "",

      "eventTeammateImpact": "Medium",

      "eventCustomerImpact": "High",

      "eventComplexity": "Low",

      "eventInitiativeID": 1069,

      "eventNeededBy": "2014-11-18"

   },

   [

      {

         "0": "Americas"

      }

   ],

Может кто-то указать мне верное направление?

Теги:
arrays

3 ответа

0
foreach ($event->regionalImpact->option as $region) {
     $output['regions'][] = $region->impact;
}
  • 0
    ? Ссылка - вот ссылка на то, что я пытаюсь сделать pastebin.com/8yu2BVYY
0

Попробуй это

foreach($objQueueData->event as $key => $event){ 

        $output[$key] = array(
            "eventID" => (int)$event->trainingEventID,
            "eventTitle" => (string)$event->teTitle,
            "eventDescription" => (string)$event->teDesc,
            "eventSource" => (string)$event->teSource,
            "eventType" => (string)$event->teType,
            "eventMedium" => (string)$event->teMedium,
            "eventRequestor" => (string)$event->creatorFirst . ' ' . $event->creatorLast,
            "eventRequestorNTID" => (string)$event->creatorNTID,
            "eventRequestDate" => (string)$event->teCreated,
            "eventDirector" => (string)$event->teDirector,
            "eventTeammateImpact" => (string)$event->teTeammateImpact,
            "eventCustomerImpact" => (string)$event->teCustomerImpact,
            "eventComplexity" => (string)$event->teComplexity,
            "eventInitiativeID" => (int)$event->intID,
            "eventNeededBy" => (string)$event->teNeededBy
        );
        $impactedRegions = array();

        if(isset($event->regionalImpact->option)){

            foreach ($event->regionalImpact->option as $region) {
                $impactedRegions[] = $region->impact;
            }                
        }

        $output[$key]['impactedRegions'] = $impactedRegions;
    }
    // Set the content type to JSON  for jquery to understand
    header('Content-Type: text/json');

    // Print the response to the page
    print json_encode($output);         
0

Я думаю, что проблема, с которой вы сталкиваетесь, заключается в использовании array_push() с ассоциативным массивом. Я верю, что array_push предназначен для толкания значений в indexed массив.

Попытка указать ключ с помощью $output['impactedRegions'] = $impactedRegions; вместо.

        $impactedRegions = array();
        if(isset($event->regionalImpact->option)){
            foreach ($event->regionalImpact->option as $region) {
                $impactedRegions[] = $region->impact;
            }
            $output['impactedRegions'] = json_encode($impactedRegions);
        }

Кроме того, json_encode($impactedRegions) будет кодировать массив таким образом, чтобы он включался как объект json в исходный массив.

  • 0
    Это близко, но он должен быть частью исходного массива, который в настоящее время находится за его пределами.
  • 0
    Оригинальный массив? Я думал, что вы хотели, чтобы $impactedRegions impactedRegions был вложенным массивом $output . Я ошибаюсь?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню