PHP将数组推送到现有数组中
我有一个用于创建JSON输出的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,
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);