PHP将数组推送到现有数组中

PHP将数组推送到现有数组中,php,arrays,json,Php,Arrays,Json,我有一个用于创建JSON输出的php文件。您可以在下面的代码中看到我的循环: foreach($objQueueData->event as $event){ $output[] = array( "eventID" => (int)$event->trainingEventID, "eventTitle" => (string)$event->teTitle,

我有一个用于创建JSON输出的php文件。您可以在下面的代码中看到我的循环:

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);         
我的问题是第二个数组受影响的区域。这应该是输出的子数组,但它没有按预期工作

我试图让它成为输出阵列的一部分

以下是当前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"

      }

   ],

有人能给我指出正确的方向吗?

我认为您遇到的问题是,您正在使用关联数组的array\u push。我相信array_push用于将值推送到索引数组

foreach ($event->regionalImpact->option as $region) {
     $output['regions'][] = $region->impact;
}
尝试使用$output['impactedRegions']=$impactedRegions指定密钥;相反

另外,json_encode$impactedRegions将对数组进行编码,因此它将作为json对象包含在原始数组中。

试试这个

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

这很接近,但它需要是原始阵列的一部分,它当前在原始阵列之外。原始阵列?我认为您希望$impactedRegions成为$output的子数组。我错了吗?也许我没有使用Sub这个词。这是我正在寻找的标准嵌套数组。主数组包含所有这些数据,然后在记录中有一个子数组包含它影响的区域数组。我看到了问题所在。我认为在将子数组包含到原始数组中之前,您可能需要对其进行json编码。仍然不是我想要的:/
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);