Чтение результатов из PHP Facebook Graph API SDK

Я пытаюсь получить список всех имен и идентификаторов людей, которые действительно собираются на мероприятие, которое я создаю. Получение списка с помощью API-интерфейса php graph для facebook было простой частью и, похоже, работает.

Код (php) для получения данных:

// ПОЛУЧИТЬ УЧАСТИЕ

    $getattending = "/" . $event_id . "/attending?fields=name,id";

    $req_events = new FacebookRequest($session, 'GET', $getattending);
    $req_response = $req_events->execute();
    $data_array = $req_response->getGraphObject()->asArray();

    $counter = array_map("count", $data_array);
    $count = $counter['data'];

    echo "Attending: $count<BR>";

   echo "<PRE>";
   print_r($data_array);
   echo "</PRE>";

Результат:

Множество (

[data] => Array
    (
        [0] => stdClass Object
            (
                [name] => Thierry Martens
                [id] => 788923242
            )

        [1] => stdClass Object
            (
                [name] => Lisa Mario Laurier
                [id] => 708876902536391
            )

        [2] => stdClass Object
            (
                [name] => Ramy Mahfoudhi
                [id] => 735036479911364
            )

        [3] => stdClass Object
            (
                [name] => Jeremy Verriest Duroisin
                [id] => 783108468420824
            )

        [4] => stdClass Object
            (
                [name] => Jonas En Svetlana Laurier
                [id] => 773139856081632
            )

        [5] => stdClass Object
            (
                [name] => Maxime Demerliere
                [id] => 849400761761008
            )

        [6] => stdClass Object
            (
                [name] => Jeremy Beauchamp
                [id] => 10204174155667109
            )

        [7] => stdClass Object
            (
                [name] => Sari Jens Delcourte Delusinne
                [id] => 10204086515874904
            )

        [8] => stdClass Object
            (
                [name] => Pieter Marysse
                [id] => 10204911283045115
            )

        [9] => stdClass Object
            (
                [name] => Patrick Vanden Bosschelle
                [id] => 10202907209181148
            )

    )

НО у меня проблемы с фактическим сбором данных; мне просто нужно имя и идентификатор в простом массиве или списке, чтобы я мог использовать его в остальной части скрипта. Любые идеи

Мой второй вопрос заключается в том, что API-интерфейс php graph, похоже, имеет /eventnr/atending для графика 2.1; показ nr сопровождающих на рассматриваемом мероприятии; но когда я на самом деле вызываю его, я получаю сообщение об ошибке, в котором говорится, что мне нужно использовать график 2.1, в то время как я загрузил последнюю версию php sdk и, похоже, не могу найти способ изменить эту версию. Этот вопрос не так важен, как предыдущий; но если это сработает, мне понадобится меньше кода :)

Надеюсь, вы, ребята, можете мне помочь :)


person Thierry Martens    schedule 12.10.2014    source источник


Ответы (3)


!!!! ПОНЯТНО !!!!

Посмотрел еще немного здесь, и решения кажутся довольно простыми:

for ($x = 0; $x <= $count; $x++)
        {
        $names[$x] = $data_array['data'][$x]->name;
        $ids[$x] = $data_array['data'][$x]->id;
        }

Дисплеи:

Массив имен:

Массив ( [0] => Тьерри Мартенс [1] => Лиза Марио Лорье [2] => Рами Махфуди [3] => Джереми Верриест Дюруазен [4] => Джонас Эн Светлана Лорье [5] => Максим Демерльер [6 ] => Джереми Бошамп [7] => Сари Йенс Делькур Делюзинн [8] => Питер Марисс [9] => Патрик Ванден Босшель [10] => )

Массив $ids:

Array ( [0] => 788923242 [1] => 708876902536391 [2] => 735036479911364 [3] => 783108468420824 [4] => 773139856081632 [5] => 849400761761008 [6] => 10204174155667109 [7] => 10204086515874904 [8] => 10204911283045115 [9] => 10202907209181148 [10] => )

person Thierry Martens    schedule 12.10.2014

Это как:

$dataArray = $data_array['data'];
$firstPerson = new $dataArray[0];
echo $firstPerson->name;
echo $firstPerson->id;

Хотя, возможно, вам это нужно:

foreach($data_array['data'] as $a){
  $o = new $a; $names[] = $o->name; $ids[] = $o->id;
}
// $names is Array of names
// $ids in Array of ids
person StackSlave    schedule 12.10.2014
comment
Не работает (я отредактирую свой первый код и добавлю код, который использую для получения данных; может быть полезно. - person Thierry Martens; 12.10.2014

Я добавил ваш код, но результат следующий (пустые массивы)

добавлен код:

    foreach($data_array['data'] as $a)
            {
            $o = new $a; $names[] = $o->name; $ids[] = $o->id;
            }

    echo "FIRST ELEMENT - \$data_array['data'][0]: <BR>";
    print_r($data_array['data'][0]); echo "<BR><BR>";
    echo "\$names array: <BR>";
    print_r($names); echo "<BR><BR>";
    echo "\$ids array: <BR>";
    print_r($ids); echo "<BR><BR>";

Результат эха и print_r:

ПЕРВЫЙ ЭЛЕМЕНТ — $data_array['data'][0]:

    stdClass Object ( [name] => Thierry Martens [id] => 788923242 ) 

Массив имен:

    Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => ) 

Массив $ids:

    Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => )
person Thierry Martens    schedule 12.10.2014