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());
Для получения записей не только с первой страницы, а с нескольких страниц, можно использовать цикл 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 проходит по каждому значению в массиве $owner_id (каждой группе), а затем внутри этого цикла используется цикл do-while для получения всех записей с заданным смещением (offset) с помощью увеличения этого смещения на значение count. Полученные записи добавляются к общему массиву $posts, который затем возвращается как результат метода wallGet().
Для получения записей не только с первой страницы, а с нескольких страниц, можно использовать цикл 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 проходит по каждому значению в массиве $owner_id (каждой группе), а затем внутри этого цикла используется цикл do-while для получения всех записей с заданным смещением (offset) с помощью увеличения этого смещения на значение count. Полученные записи добавляются к общему массиву $posts, который затем возвращается как результат метода wallGet().