我现在正在开发facebook的图形api,在那里他们会给我一个json/数组响应。我需要做的是重新格式化json,因为我不喜欢使用它们的格式。这是我的示例json响应:
"ids": [
{
"id": "id1",
"format": [
{
"filter": "130x130",
"picture": "sample1.jpg",
},
{
"filter": "130x130",
"picture": "sample1.jpg",
}
]
},
{
"id": "id2",
"format": [
{
"filter": "130x130",
"picture": "sample2.jpg",
},
{
"filter": "130x130",
"picture": "sample2.jpg",
}
]
}
]
PHP代码:
$sampleArray = //let say this is the array sample above
$dataArray = array();
$dataArrayNested = array();
foreach($sampleArray['ids'] as $key => $value){
$dataArrayNested[$key] = $value['id'];
$dataArrayNested[$key] = $value['format'][0]['picture']
}
$dataArray['ids'] = $dataArrayNested;
但当我打印出结果时:
{
"ids": [
"id1",
"sample1.jpg",
"id2",
"sample2.jpg"
]
}
这个结果并不是我真正想要的。应该是这样的:
{
"ids": [
{
"id": "id1",
"format" : "sample1.jpg"
},
{
"id": "id1",
"format" : "sample1.jpg"
}
]
}
我知道我的代码有问题。。
在第4行的PHP代码中,您引用的是与数字无关的$key
。
我想你想要的是:
<?php
foreach($sampleArray['ids'] as $value){
$key = $value['id'];
if (!isset($dataArrayNested[$key])) $dataArrayNested[$key] = array();
$dataArrayNested[$key]['id'] = $value['id'];
$dataArrayNested[$key]['format'] = $value['format'][0]['picture'];
}