我从服务器获取[{"2016":"200"},{"2017":"200"}]
这个JSON字符串,我想附加另一个对象,即。 {"2018":"324"}
位于现有JSON数组的末尾,并且希望在第0个索引处删除现有JSON数组的对象,以便可以获得我想要的结果 [{"2017":"200"}{"2018":"324"}]
。
这就是我正在做的事情
$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;
此处的问题是$s
以{"1":{"2017":"200"},"2":{"2018":"35"}}
之类的对象形式提供输出。所需内容为[{"2017":"200"}{"2018":"324"}]
答案 0 :(得分:0)
我可能会建议使用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;
正如其他人已经指出的那样,你得到的对象是等价的,因为你的数组不是从0
索引开始的,所以它是用数字键在javascript对象中转换的。我使用array_shift()
删除第一个元素。它还将重置数组中的索引。如果在将其他元素添加到数组之前删除第一个键,它也会(微不足道)更快。