I am getting [{"2016":"200"},{"2017":"200"}]
This JSON string from server , I want to append another object ie. {"2018":"324"}
at the end of the existing JSON array and want to delete object at the 0th index the existing JSON array so that the my desired result [{"2017":"200"}{"2018":"324"}]
can be obtained. Here's what i am doing
$str = json_decode($x1,TRUE); //x1 is my JSON
array_push($str, array("2018"=>"324")); //adding another object
unset($str[0]); //removing 0th index
$s = json_encode($str,TRUE); //making JSON again
echo $s;
Problem here is $s
giving output in object form like {"1":{"2017":"200"},"2":{"2018":"35"}}
While what is wanted is [{"2017":"200"}{"2018":"324"}]
I might suggest better approach, using array_shift()
:
$json = json_decode($x1, TRUE); // decoding
array_shift($json); // removing first element
$json[] = [ "2018" => "324" ]; // adding last element
$str = json_encode($json); // encoding
echo $str;
As others already pointed out, you getting object equivalent because your array not starting from 0
index, so it is converted in javascript object with numeric keys. I'm using array_shift()
to remove first element. It will also reset indices in array. It also would be (insignificantly) faster, if you remove first key before adding other elements to array.