我目前有一个这样的数组(问题中的所有数组都是JSON格式):
{
"array":[
"item",
"item2",
"item3"
//etc..
]
}
我使用['array'][] = array("x"=>"y","z"=>"a");
现在我的数组看起来像这样:
{
"array":{
"0":"item",
"1":"item2",
"2":"item3",
"newItem": {
"x":"y",
"z":"a"
}
//etc..
}
}
如何从数组中删除“0”和“1”,所以我只是这个?:
{
"array":[
"item",
"item2",
"item3",
"newItem": {
"x":"y",
"z":"a"
}
//etc..
]
}
答案 0 :(得分:3)
所以让我们把你原来的JSON作为输入
{
"array":[
"item",
"item2",
"item3"
]
}
您可以使用json_decode()
将JSON数据转换为PHP。从您的数组修改代码判断,您希望true
作为json_decode()
的第二个参数
$data = json_decode("{\"array\":[\"item\",\"item2\",\"item3\"]}", true);
然后您可以添加数据
$data['array'][] = array("x"=>"y","z"=>"a");
现在,您可以使用json_encode()
将PHP数据再次转换为JSON
echo json_encode($data);
这将打印
{
"array":[
"item",
"item2",
"item3",
{
"x":"y",
"z":"a"
}
]
}
您也可以将JSON_FORCE_OBJECT
作为第二个参数传递给json_encode()
,以强制将数组转换为对象,从而创建键
echo json_encode($data, JSON_FORCE_OBJECT);
此替代电话会打印出来
{
"array":{
"0":"item",
"1":"item2",
"2":"item3",
"3":{
"x":"y",
"z":"a"
}
}
}
注意,没有JSON_FORCE_OBJECT
的调用没有数组索引,而你的JSON数据有它们。原因在于您修改数据的方式不同。您可能使用以下代码
$data['array']['newItem'] = array("x"=>"y","z"=>"a");
通过为这个新项提供密钥,它必须在JSON中表示为一个对象。该数组现在包含一个对象,所有其他项也被提升为对象。
要解决您的问题,您应该像这样修改数据
$data['array'][] = array('newItem' => array("x"=>"y","z"=>"a"));
这会给你
{
"array":[
"item",
"item2",
"item3",
{
"newItem":{
"x":"y",
"z":"a"
}
}
]
}
答案 1 :(得分:0)
我认为你没有没有密钥的PHP数组,我认为没有密钥就可以拥有JSON。如果您没有指定http://php.net/manual/en/language.types.array.php,PHP将始终添加密钥。
“我目前有这样的数组”是什么意思?你的JSON看起来像这样吗?它有效吗?