Foreach в классе php? Всем привет, подскажите плз как реализовать:
- Через API VK получаю записи со стены ВК
- Но не могу понять как добавить получение записей не с 1 страницы, а с несколькихКОД -(int)$this->owner_id,
'filter' => 'owner',
'offset' => 1,
'count' => $this->count,
'extended' => 1,
'access_token' => $this->access_token,
'v' => '5.92'
);
$get_params = http_build_query($request_params);
$result = json_decode(file_get_contents('https://api.vk.com/method/wall.get?'. $get_params), TRUE);
if ($result !== false) {
return $result['response']['items'];
}
else {
$error = 'Ошибка! Записи не получены.';
return $error;
}
}
}
$getPost = new GetPost();
var_dump($getPost->wallGet());

21 Авг 2019 в 06:58
231 +1
1
Ответы
1

Для получения записей не только с первой страницы, а с нескольких страниц, можно использовать цикл foreach внутри метода wallGet() в классе GetPost. Вам нужно будет изменить параметр offset в запросе к API VK для получения записей с разных страниц.

Пример:

public function wallGet() {
$posts = []; // Создаем пустой массив для хранения всех записей
foreach ($this->owner_id as $owner_id) {
$request_params = array(
'owner_id' => -(int)$owner_id,
'filter' => 'owner',
'count' => $this->count,
'extended' => 1,
'access_token' => $this->access_token,
'v' => '5.92'
);
$offset = 0;
do {
$request_params['offset'] = $offset;
$get_params = http_build_query($request_params);
$result = json_decode(file_get_contents('https://api.vk.com/method/wall.get?'. $get_params), TRUE);
if ($result !== false) {
$posts = array_merge($posts, $result['response']['items']); // Добавляем полученные записи к общему массиву
$offset += $this->count; // Увеличиваем смещение для следующей страницы записей
}
else {
$error = 'Ошибка! Записи не получены.';
return $error;
}
} while ($offset < $result['response']['count']); // Проверяем, что не достигли конца списка записей
}
return $posts;
}

Таким образом, в данном коде цикл foreach проходит по каждому значению в массиве ownerid(каждойгруппе),азатемвнутриэтогоциклаиспользуетсяциклdo−whileдляполучениявсехзаписейсзаданнымсмещением(offset)спомощьюувеличенияэтогосмещенияназначениеcount.Полученныезаписидобавляютсякобщемумассивуowner_id (каждой группе), а затем внутри этого цикла используется цикл do-while для получения всех записей с заданным смещением (offset) с помощью увеличения этого смещения на значение count. Полученные записи добавляются к общему массиву owneri d(каждойгруппе),азатемвнутриэтогоциклаиспользуетсяциклdowhileдляполучениявсехзаписейсзаданнымсмещением(offset)спомощьюувеличенияэтогосмещенияназначениеcount.Полученныезаписидобавляютсякобщемумассивуposts, который затем возвращается как результат метода wallGet().

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир