在foreach中重新格式化数组


Reformatting array in foreach

我现在正在开发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'];
}