将php响应数组转换为逗号分隔

时间:2016-05-18 09:17:35

标签: php

我想通过使用facebook api来获取Facebook好友。

我收到回复

   {
  "data": [
  {
     "id": "groupID",
     "members": {
        "data": [
           {
              "name": "Abc",
              "administrator": false,
              "id": "xxxxxx"
           },
           {
              "name": "NewCas",
              "administrator": false,
              "id": "xxxxxxxxx"
           },
           {
              "name": "Cds",
              "administrator": false,
              "id": "xxxxxxxxx"
           },
           {
              "name": "akaha",
              "administrator": false,
              "id": "xxxxxxx"
           },

  }

}

这是我的代码

$fql = 'https://graph.facebook.com/me/groups?fields=id,members&access_token='.$access_token.'&limit=3';
$fqlresult = file_get_contents($fql); 
$f = json_decode($fqlresult, true);

尝试了内爆。

$result = implode(',', array_column($f['data'], 'id'));

我收到了这个回复

GroupID,GroupID,GroupID

我想将响应用户ID(成员ID)作为

xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx

由于

5 个答案:

答案 0 :(得分:1)

其他答案几乎是正确的,但data是一个包含一个元素的数组,所以它应该是:

echo implode(',', array_column($f['data'][0]['members']['data'], 'id'));

这就是当你只有一个groupid时,如果你有多个组ID,你需要循环它。 (通过检查[0]

循环遍历$groupcount = count($f['data']);

答案 1 :(得分:0)

这有效......

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.12.0/lodash.js"></script>

编辑 - 根据您的更新和更改请求...

$arr = array(
    'data' => array(
        array('id' => 'xxxx1'),
        array('id' => 'xxxx2'),
        array('id' => 'xxxx3'),
        array('id' => 'xxxx4'),
        array('id' => 'xxxx5'),
        array('id' => 'xxxx6'),
        array('id' => 'xxxx7'),
        array('id' => 'xxxx8'),
    )
);

echo implode(',', array_column($arr['data'], 'id'));

请查看http://php.net/manual/en/language.types.array.php和多维数组

部分

答案 2 :(得分:0)

echo implode(',', array_column($f['data'][0]['members']['data'], 'id'));

答案 3 :(得分:0)

$data_arr=json_decode($data,true);
$return_str="";
foreach($data_arr['data'] as $row)
{
    $return_str .=implode(", ", array_column($row['members']['data'], 'id'))  ;  
}
echo rtrim($return_str,",");

这适用于$ f ['data']中的多个元素。

答案 4 :(得分:0)

确保您的PHP版本为5.5+。指定版本下方不支持array_column函数。您也可以在没有array_column的情况下使用此代码。

$data = $result['data'][0]['members']['data'];
$keyValue = '';

foreach ($data as $outerKey => $outerValue) {
  foreach ($outerValue as $key => $value) {
    if($key == 'id'){
      $keyValue .= $value . ' ';
    }
  }
}
echo $keyValue;