Как объединить два запроса в цикле foreach в PHP? - PullRequest
0 голосов
/ 22 марта 2012

Facebook API может дать администраторам страницы пользователя. Предположим, что он возвращает мне следующий массив. К сожалению, он не возвращает имя или URL.

Это превращает меня в список идентификаторов страниц.

$results = $facebook->api('/fql', array('q'=>'SELECT page_id, type FROM page_admin WHERE uid = me()'));

foreach($results['data'] as $result) {
    echo $result['page_id'], '<br />';
}

Используя следующее, я повторяю имя идентификатора страницы.

$pagename = $facebook->api('/fql', array('q'=>'SELECT name FROM page WHERE page_id = 230127303706132'));
echo $pagename['data'][0]['name'];

У меня вопрос: как мне эффективно составить список имен страниц?
Я думаю, что мне нужно поместить запрос в цикл foreach.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012
try this

$fql=https://graph.facebook.com/fql?q=SELECT name FROM page WHERE page_id in(SELECT page_id, type FROM page_admin WHERE uid = me())&access_token=xxxxxxxx;
$page_names =json_decode(file_get_contents($fql));
print_r($page_names);
It will show an array of page names.
0 голосов
/ 22 марта 2012

Первый захват page_ids

$results = $facebook->api('/fql', array('q'=>'SELECT page_id, type FROM page_admin WHERE uid = me()'));

$page_ids = array();
foreach($results['data'] as $result) {
    $page_ids[] = $result['page_id'];
}

Тогда получите имена страниц

$pagenames = $facebook->api('/fql', array('q'=>'SELECT name FROM page WHERE page_id IN (' . join(',', $page_ids) .')' ));

// list all page names
foreach($pagenames['data'] as $result) {
    echo $result['name'], '<br />';
}

Получить в одном запросе

$pagenames = $facebook->api('/fql', array('q' => 'SELECT name FROM page WHERE page_id IN (SELECT page_id FROM page_admin  WHERE  uid=me())'));

// list all page names
foreach($pagenames['data'] as $result) {
    echo $result['name'], '<br />';
}
...