Как получить доступ к этим данным? - PullRequest
0 голосов
/ 28 марта 2012

Привет всем. Я новичок в php, и это мое первое приложение поверх php.

Я пытаюсь создать новый альбом с помощью Graph API и загрузить в него фотографии.

У меня есть следующий код, проблема в том, что после создания графа Facebook api возвращает данные, которые содержат идентификатор альбома, и этот идентификатор позже используется для загрузки фотографий в этот альбом.

В моем случае я получаю данные, но не могу их прочитать, я пытался получить к ним доступ как к объекту, как к массиву, но ни один из них не работает.

Чтобы проверить жизнеспособность, когда я пытался напечатать его целиком, он выдает такой результат. Result: {"data":[{"id":"321215475937088","from":{"name":"Lorem …

Я хочу знать, как я могу получить доступ к этому элементу id? является ли $ result массивом, объектом или чем. Я испробовал все возможности, которые мог придумать, но не получил нужного результата.

<code>// Create a new album
        $graph_url = "https://graph.facebook.com/me/albums?" . "access_token=" . $access_token;

        $postdata = http_build_query(array('name' => $album_name, 'message' => $album_description));
        $opts = array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata));
        $context = stream_context_create($opts);
        //$result = json_decode(file_get_contents($graph_url, false, $context));
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $graph_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $result = curl_exec($ch);
        curl_close($ch);
        echo "<pre>";
        echo "Result: " . $result; //output of this line is given above
        echo "Result[id]: " . $result[id]; //Notice: Use of undefined constant id - assumed 'id' ...
        echo "Result[data][id]: " . $result[data][id]; //Notice: Use of undefined constant data - assumed 'data'...
//Notice: Use of undefined constant id - assumed 'id'...
//Fatal error: Cannot use string offset as an array in ...
        echo "Result ID: " . $result -> id;
        echo "Data - >ID: " . $data->id;
        echo "Data ID: " . $data[id];
        echo "
"; // Получить идентификатор нового альбома $ album_id = $ result -> id;

Ответы [ 4 ]

2 голосов
/ 28 марта 2012

Вы получаете сериализованный объект JSON. Вы должны десериализовать его перед использованием. Вы можете сделать это так:

echo "Result: " . $result;
$result = json_decode($result);

После этого вы можете получить доступ к свойствам объекта:

echo "Result ID: " . $result->data[0]->id;

* Обратите внимание, что данные в строке ответа - это массив, содержащий объекты

1 голос
/ 28 марта 2012

Используйте json_decode в ответе для десериализации полученной строки JSON.

1 голос
/ 28 марта 2012

Его формат JSON.Вы можете преобразовать его в массив / объект с помощью json_decode () ;

$json_data = json_decode($responce_string);

Прочтите руководство для получения дополнительной информации

1 голос
/ 28 марта 2012

Ответ от Graph API сериализован в JSON.

Используйте json_decode для десериализации их

print_r(json_decode($result));

BTW, используйте Facebook PHP SDK и сэкономьте время и код;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...