1

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.

5
  • Please check the output of first json, it seems to be wrong in format Commented Oct 25, 2017 at 12:15
  • How would I check? I am using $resultJSON=(json_encode($newArray, JSON_FORCE_OBJECT)); Json_encode so I do not know what else to do. Sorry :( Commented Oct 25, 2017 at 12:17
  • Post the value of $resultJSON so i can see whats the input and how to format to your required output Commented Oct 25, 2017 at 12:18
  • The value of $resultJSON is the 2nd block of code listed as current output is. Would you like me to print_r and send that? Commented Oct 25, 2017 at 12:20
  • Don't use JSON_FORCE_OBJECT. Just pass no second parameter to your json_encode() call. Commented Oct 25, 2017 at 12:22

2 Answers 2

3

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.

Sign up to request clarification or add additional context in comments.

Comments

0

You just need to encode array like bellow to avoid array key

$resultJSON = json_encode(array_values($newArray));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.