我无法从以下php数组中获取正确的json格式
Array
(
[0] => Array
(
[name] => name1
[data] => Array
(
[0] => Array
(
[5] => 2013-15-6,9
[6] => 2013-15-7,9
[7] => 2013-15-8,9
[8] => 2013-15-9,9
[9] => 2013-15-10,9
[10] => 2013-15-11,9
[11] => 2013-15-12,9
)
)
)
)
将其编码为json输出
[
{
"name": "name1",
"data": [
{
"5": "2013-15-6,9",
"6": "2013-15-7,9",
"7": "2013-15-8,9",
"8": "2013-15-9,9",
"9": "2013-15-10,9",
"10": "2013-15-11,9",
"11": "2013-15-12,9"
}
]
}
]
我需要的json输出如下所示,基本上删除了数据数组中的花括号,并删除了我认为不可能的索引号。
[
{
"name": "name1",
"data": [
"2013-15-11,9",
"2013-15-12,9"
]
}
]
我已经尝试了围绕变量的array()的不同组合,通过在数据数组中添加括号让我足够接近,但我无法摆脱大括号。非常感谢一些帮助,一直在努力这几个小时。感谢
答案 0 :(得分:1)
我接受了期待的json输出,并且对其进行了json_decode
,这就是结果:
Array
(
[0] => stdClass Object
(
[name] => name1
[data] => Array
(
[0] => 2013-15-11,9
[1] => 2013-15-12,9
)
)
)
这就是PHP结构在发送到json_encode
之前的样子。
P.S。我用json_encode
检查了它(改变了过程),它确切地返回了你需要的东西。
答案 1 :(得分:1)
主要思想是即使你没有直接放置索引,PHP也会从0
存储它们。即只有当您的数组具有连续索引时,相应的JSON才可能没有键,从0
开始。否则,索引必须 - 这是因为生成的JSON必须同时包含键和值。
见样本:
$rgData = ['a','b','c'];
var_dump(json_encode($rgData));//string(13) "["a","b","c"]"
unset($rgData[0]);//now we're going from 1 numeric key
var_dump(json_encode($rgData));//string(17) "{"1":"b","2":"c"}"
请注意,在第二种情况下,您有索引,从1
开始 - 而JSON 必须才能保留该索引。唯一的方法是传递索引。
您可以通过以下方式将数组转换为连续键:
$rgData = [5=>'a',6=>'b',7=>'c'];
$rgData = array_values($rgData);
var_dump($rgData);//array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
答案 2 :(得分:0)
通过使用`[0] ['data'] [0]'中值的新索引数组覆盖[0]['data']
,您可以在一行中重构数据。
代码:(Demo)
$array=[
['name'=>'name1',
'data'=>[
[
5=>'2013-15-6,9',
6=>'2013-15-7,9',
7=>'2013-15-8,9',
8=>'2013-15-9,9',
9=>'2013-15-10,9',
10=>'2013-15-11,9',
11=>'2013-15-12,9'
]
]
]
];
$array[0]['data']=array_values($array[0]['data'][0]);
echo json_encode($array);
输出:
[
{
"name":"name1",
"data":[
"2013-15-6,9",
"2013-15-7,9",
"2013-15-8,9",
"2013-15-9,9",
"2013-15-10,9",
"2013-15-11,9",
"2013-15-12,9"
]
}
]