Reputation: 155
I am working on an API to be able to feed some data in an array in JSON format using PHP.
$newArray = array();
$i=0;
foreach ($resultJSON as $i => $item)
{
$newArray['result'][$i]['ISO'] =$item['ISO'];
$newArray['result'][$i]['Country_Name']= $item['Country_Name'];;
$newArray['result'][$i]['Sector']['Retail']= (int)$item['Retail'];
$newArray['result'][$i]['Sector']['Food']= (int)$item['Food'];
$newArray['result'][$i]['Sector']['Transportation']= (int)$item['Transportation'];
$newArray['result'][$i]['Sector']['Transportation']= (int)$item['Telecom'];
$newArray['result'][$i]['Sector']['Household_Goods']= (int)$item['Household_Goods'];
$newArray['result'][$i]['Sector']['Oil_and_Gas']= (int)$item['Oil_and_Gas'];
$newArray['result'][$i]['Sector']['Electronics']= (int)$item['Electronics'];
$newArray['result'][$i]['Sector']['Automotive']= (int)$item['Automotive'];
$newArray['result'][$i]['Sector']['Chemicals']= (int)$item['Chemicals'];
$newArray['result'][$i]['Sector']['Technology']= (int)$item['Technology'];
$newArray['result'][$i]['Sector']['Pharmaceuticals']= (int)$item['Pharmaceuticals'];
$newArray['result'][$i]['Sector']['Construction']= (int)$item['Construction'];
$newArray['result'][$i]['Sector']['Machinery_and_Equipment']= (int)$item['Machinery_and_Equipment'];
$newArray['result'][$i]['Sector']['Metals']= (int)$item['Metals'];
$newArray['result'][$i]['Sector']['Aeronautics']= (int)$item['Aeronautics'];
$newArray['result'][$i]['Sector']['Business_services']= (int)$item['Business_services'];
$newArray['result'][$i]['Sector']['Utilities']= (int)$item['Utilities'];
$newArray['result'][$i]['Sector']['Personal_and_recreational_goods']= (int)$item['Personal_and_recreational_goods'];
$newArray['result'][$i]['Sector']['Paper']= (int)$item['Paper'];
$newArray['result'][$i]['Sector']['Other_services']= (int)$item['Other_services'];
$newArray['result'][$i]['Current_Average']= (int)$item['Current_Average'];
$newArray['result'][$i]['Forecast_Average']= (int)$item['Forecast_Average'];
$i++;
}
$resultJSON = (json_encode($newArray, JSON_FORCE_OBJECT));
header('Content-Type: application/json iHYPERLINK');
echo $resultJSON;
The people that I am building for have said that they would rather have an array of objects.
Currently the output is
{ "result": { "0": { "ISO": "US", "Country_Name": "U.S.", "Sector": { "Retail": 21, "Food": 34, "Transportation": 35, "Household_Goods": 39, "Oil_and_Gas": 50, "Electronics": 61, "Automotive": 49, "Chemicals": 51, "Technology": 67, "Pharmaceuticals": 62, "Construction": 54, "Machinery_and_Equipment": 57, "Metals": 39, "Aeronautics": 56, "Business_services": 54, "Utilities": 44, "Personal_and_recreational_goods": 45, "Paper": 33, "Other_services": 41 }, "Current_Average": 49, "Forecast_Average": 50 }, "1": { "ISO": "CA", "Country_Name": "Canada", "Sector": { "Retail": 1, "Food": 1, "Transportation": 40, "Household_Goods": 52, "Oil_and_Gas": 71, "Electronics": 63, "Automotive": 79, "Chemicals": 45, "Technology": 84, "Pharmaceuticals": 89, "Construction": 59, "Machinery_and_Equipment": 64, "Metals": 34, "Aeronautics": 58, "Business_services": 55, "Utilities": 46, "Personal_and_recreational_goods": 80, "Paper": 39, "Other_services": 47 }, "Current_Average": 55, "Forecast_Average": 56 }
However they have asked for
{"result":[{ "ISO": "US", "Country_Name": "U.S.", "Sector": { "Retail": 21, "Food": 34, "Transportation": 35, "Household_Goods": 39, "Oil_and_Gas": 50, "Electronics": 61, "Automotive": 49, "Chemicals": 51, "Technology": 67, "Pharmaceuticals": 62, "Construction": 54, "Machinery_and_Equipment": 57, "Metals": 39, "Aeronautics": 56, "Business_services": 54, "Utilities": 44, "Personal_and_recreational_goods": 45, "Paper": 33, "Other_services": 41 }, "Current_Average": 49, "Forecast_Average": 50 }, { "ISO": "CA", "Country_Name": "Canada", "Sector": { "Retail": 1, "Food": 1, "Transportation": 40, "Household_Goods": 52, "Oil_and_Gas": 71, "Electronics": 63, "Automotive": 79, "Chemicals": 45, "Technology": 84, "Pharmaceuticals": 89, "Construction": 59, "Machinery_and_Equipment": 64, "Metals": 34, "Aeronautics": 58, "Business_services": 55, "Utilities": 46, "Personal_and_recreational_goods": 80, "Paper": 39, "Other_services": 47 }, "Current_Average": 55, "Forecast_Average": 56 }]}
So they do not want the numbers showing but I have no idea how to do this.
Any help would be appreciated.
Upvotes: 1
Views: 87
Reputation: 1165
Remove the flag JSON_FORCE_OBJECT
and remove the plus counter $++
. It should resolve your problem.
$resultJSON = json_encode($newArray);
JSON_FORCE_OBJECT
Outputs an object rather than an array when a non-associative array is used. Especially useful when the recipient of the output is expecting an object and the array is empty. Available since PHP 5.3.0.
Upvotes: 3
Reputation: 598
You just need to encode array like bellow to avoid array key
$resultJSON = json_encode(array_values($newArray));
Upvotes: 0