2016-05-18 2 views
2

Я пытаюсь получить друзей facebook с помощью facebook api.преобразовать массив ответов php как разделенные запятой

Я получаю ответ

{ 
    "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 

Я хочу взять идентификаторы пользователей ответа (члены ИН) в качестве

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

Благодарности

+0

вы могли бы разместить ту часть, где вы действительно пытались взрывать ответ? – rsz

+0

'$ результат = взрывать (», „array_column ($ ответ [“ данные '],' id ')); ' –

+0

$ mystring = implode (",", $ f1); – Vinay

ответ

1

Других ответами являются почти правильно, но data является массив с одним элементом, поэтому он должен быть:

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

, и это когда у вас есть только один groupid, если у вас есть несколько идентификаторов групп, вам нужно будет пройти через него. (Цикл по [0] проверяя $groupcount = count($f['data']);

0

Это работает ...

$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')); 

EDIT - на основе вашего обновления и изменения запроса ...

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

ознакомьтесь http://php.net/manual/en/language.types.array.php и разделом о многомерных массивах

+0

Здравствуйте, сэр. Я немного изменил код для получения членов группы. – Vinay

+0

Не работает сэр. – Vinay

+0

хорошо, я не тестировал его так же, как у меня нет точной установки объекта, но была определенная независимая мысль, принятая с вашей стороны, путем чтения и понимания многомерных массивов. Я сделаю одно окончательное редактирование, а затем, если это сработает, я бы оценил, что это выбрано, иначе я оставлю этот вопрос, поскольку обычно я только 3 изменения на SO :) – Barry

0
echo implode(',', array_column($f['data'][0]['members']['data'], 'id')); 
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 [ «данных»].

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; 
Смежные вопросы