Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
7 / 9 / 0
Регистрация: 09.11.2012
Сообщений: 408
VK API

Warning: Invalid argument supplied for foreach() in

19.10.2016, 18:23. Показов 1425. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скрипт для вк.
Ругается на строчку: foreach($GetBoard as $board){
Выше: точно такой же блок, но для стены - там всё работает. Тут какую-то ошибку находит.
Почему? Как решить?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Получаем список последних 10 сообщений из обсуждений  
    $GetBoard = json2array(file_get_contents("https://api.vk.com/method/board.getTopics?group_id=-{$GroupId}&filter=all&count=10"));
    $GetBoard = $GetBoard['response'];
    unset($GetBoard[0]);
    foreach($GetBoard as $board){
        if(spamcheck($board['text']) == true){
            $SpamBoardMessages[]=$board['id'];
            $SpamUID[]=$board['from_id'];
        }
        $GetBoardComments = json2array(file_get_contents("https://api.vk.com/method/board.getComments?group_id=-{$GroupId}&count=10&post_id={$board['id']}&need_likes=0&sort=desc"));
        $GetBoardComments = $GetBoardComments['response'];
        unset($GetBoardComments[0]);
        foreach($GetBoardComments as $boardcomm){
            if(spamcheck($boardcomm['text']) == true){
                $GetBoardComments[]=$boardcomm['cid'];
                $SpamUID[]=$boardcomm['from_id'];
            }
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2016, 18:23
Ответы с готовыми решениями:

Warning: Invalid argument supplied for foreach()
Здраствуйте!!! Вот появилась такая ошибка в чате Д. Бородина Warning: Invalid argument supplied for foreach() in...

Invalid argument supplied for foreach()
В javascript получил список плагинов из объекта navigator, записал их в массив и передал через ajax в php, там пытаюсь вывести этот массив,...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
привет помогите разобраться с этим <ссылка удалена - нарушение правил> скачал установил все нормально, из его же папки автора скинул...

11
19 / 19 / 11
Регистрация: 15.11.2014
Сообщений: 164
19.10.2016, 18:36
Потому что $GetBoard не является массивом
0
7 / 9 / 0
Регистрация: 09.11.2012
Сообщений: 408
20.10.2016, 06:27  [ТС]
Цитата Сообщение от konorw Посмотреть сообщение
Потому что $GetBoard не является массивом
А что же это?

Добавлено через 5 часов 51 минуту
Не понимаю. Первая же часть работает. Хотя отличаются они только названиями массивов

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Получаем список последних 10 сообщений
    $GetWall = json2array(file_get_contents("https://api.vk.com/method/wall.get?owner_id=-{$GroupId}&filter=others&count=10"));
    $GetWall = $GetWall['response'];
    unset($GetWall[0]);
    foreach($GetWall as $wall){
        if(spamcheck($wall['text']) == true){
            $SpamMessages[]=$wall['id'];
            $SpamUID[]=$wall['from_id'];
        }
        $GetComments = json2array(file_get_contents("https://api.vk.com/method/wall.getComments?owner_id=-{$GroupId}&count=10&post_id={$wall['id']}&need_likes=0&sort=desc&preview_length=0"));
        $GetComments = $GetComments['response'];
        unset($GetComments[0]);
        foreach($GetComments as $comm){
            if(spamcheck($comm['text']) == true){
                $SpamComments[]=$comm['cid'];
                $SpamUID[]=$comm['from_id'];
            }
        }
    }
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
20.10.2016, 07:45
PHP
1
var_dump($GetBoard);
Перед foreach. И вы сразу увидите что там. Он ведь на этот foreach ругается?
Цитата Сообщение от smit1987 Посмотреть сообщение
Первая же часть работает
И что? А может в ответ на второй запрос приходит строка или false или еще что? Тем более вы удаляете нулевой элемент.
0
7 / 9 / 0
Регистрация: 09.11.2012
Сообщений: 408
21.10.2016, 02:28  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Перед foreach. И вы сразу увидите что там. Он ведь на этот foreach ругается?
PHP
1
2
var_dump($GetBoard);
foreach($GetBoard as $board){
Так?

Возвращает:

array(3) { ["topics"]=> array(3) { [0]=> int(2) [1]=> array(9) { ["tid"]=> int(34456254) ["title"]=> string(6) "222222" ["created"]=> int(1476926746) ["created_by"]=> int(362068274) ["updated"]=> int(1476931874) ["updated_by"]=> int(342995510) ["is_closed"]=> int(0) ["is_fixed"]=> int(0) ["comments"]=> int(3) } [2]=> array(9) { ["tid"]=> int(34454042) ["title"]=> string(20) "Обсуждение" ["created"]=> int(1476885308) ["created_by"]=> int(362068274) ["updated"]=> int(1476885321) ["updated_by"]=> int(342995510) ["is_closed"]=> int(0) ["is_fixed"]=> int(0) ["comments"]=> int(2) } } ["default_order"]=> float(1) ["can_add_topics"]=> int(0) }
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37v37.myjino.ru/antispam_moe.php on line 94

Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37v37.myjino.ru/antispam_moe.php on line 94

Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37v37.myjino.ru/antispam_moe.php on line 94


И что мне это дает? Вижу ответ от контакта и 3 ошибки из одной строки.. Ничего не понимаю.

Добавлено через 9 часов 57 минут
ап.

Добавлено через 2 часа 33 минуты
Кстати интересно. Подправил API ссылки, проверил таким образом 4 массива:

1. $GetWall
2. $GetComments

3. $GetBoard
4. $GetBoardComments

Получилось, что первые три массива, включая тот на который раньше ругалось - вернулись нормальные ответы от контакта,.
А вот 4, который зависит от 3 - вернулись три нуля и выдает 3 ошибки.
Может дело самих в ссылках? Так вроде сейчас все правильно написано. Кто шарит, взгляните, плиз.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//Получаем список последних 40 сообщений
 
    $GetWall = json2array(file_get_contents("https://api.vk.com/method/wall.get?owner_id=-{$GroupId}&filter=others&count=10"));
    $GetWall = $GetWall['response'];
    unset($GetWall[0]);
    foreach($GetWall as $wall){
        if(spamcheck($wall['text']) == true){
            $SpamMessages[]=$wall['id'];
            $SpamUID[]=$wall['from_id'];
        }
                //Получаем список последних 10 комментов
        $GetComments = json2array(file_get_contents("https://api.vk.com/method/wall.getComments?owner_id=-{$GroupId}&count=10&post_id={$wall['id']}&need_likes=0&sort=desc&preview_length=0"));
        $GetComments = $GetComments['response'];
        unset($GetComments[0]);
        foreach($GetComments as $comm){
            if(spamcheck($comm['text']) == true){
                $SpamComments[]=$comm['cid'];
                $SpamUID[]=$comm['from_id'];
            }
        }
    }
//Получаем список последних 40 обсуждений  
    $GetBoard = json2array(file_get_contents("https://api.vk.com/method/board.getTopics?group_id={$GroupId}&count=40"));
    $GetBoard = $GetBoard['response'];
    unset($GetBoard[0]);
    foreach($GetBoard as $board){
        if(spamcheck($board['title']) == true){
            $SpamBoardMessages[]=$board['tid'];
            $SpamUID[]=$board['created_by'];
        }
                 //Получаем список последних 40 комментов из обсуждений 
        $GetBoardComments = json2array(file_get_contents("https://api.vk.com/method/board.getComments?group_id={$GroupId}&count=40&topic_id={$board['tid']}&need_likes=0&sort=desc"));
        $GetBoardComments = $GetBoardComments['response'];
        unset($GetBoardComments[0]);
        foreach($GetBoardComments as $boardcomm){
            if(spamcheck($boardcomm['text']) == true){
                $GetBoardComments[]=$boardcomm['id'];
                $SpamUID[]=$boardcomm['from_id'];
            }
        }
    }

NULL
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37v37.myjino.ru/antispam_moe.php on line 98
NULL
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37v37.myjino.ru/antispam_moe.php on line 98
NULL
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37v37.myjino.ru/antispam_moe.php on line 98
0
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
21.10.2016, 09:52
Цитата Сообщение от smit1987 Посмотреть сообщение
foreach($GetWall as $wall)
у вас ассоциативный массив и согласно результатам нужно:

1. указать ключ foreach($GetWall["topics"] as $wall){} и далее обрабатывать полученный массив внутри цикла
2. при необходимости ["default_order"] и ["can_add_topics"] проверить на наличие данных отдельно
3. foreach($GetWall as $wall) - внутри этого цикла обрабатывается данные никак не соответствуют вашему результату... что то напутали?
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
21.10.2016, 10:03
smit1987, проверяйте почему приходит пустая переменная. Возможно неверно формируется строка запроса. Проверяйте ее перед тем как отправить запрос.

Добавлено через 10 минут
Fart83, таки да. Нужно открывать вложенные массивы.
PHP
1
$GetWall = $GetWall['response']['topics'];
0
7 / 9 / 0
Регистрация: 09.11.2012
Сообщений: 408
23.10.2016, 14:32  [ТС]
Цитата Сообщение от Fart83 Посмотреть сообщение
у вас ассоциативный массив и согласно результатам нужно:
1. указать ключ foreach($GetWall["topics"] as $wall){} и далее обрабатывать полученный массив внутри цикла
2. при необходимости ["default_order"] и ["can_add_topics"] проверить на наличие данных отдельно
3. foreach($GetWall as $wall) - внутри этого цикла обрабатывается данные никак не соответствуют вашему результату... что то напутали?
Так а причем здесь $GetWall? Я ж сказал, чтот этот блок как раз работает правильно. Он тут для примера, как эталон.

А косячит где-то в паре: $GetBoard, $GetBoardComments.
А ошибку именно выдает: $GetBoardComments.
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
24.10.2016, 06:27
Ну сделайте по аналогии.
PHP
1
var_dump($GetBoardComments);
И потом посмотрите ключи массива.
0
7 / 9 / 0
Регистрация: 09.11.2012
Сообщений: 408
26.10.2016, 00:25  [ТС]
Протестил:
var_dump($GetBoardComments);
перед :
$GetBoardComments = $GetBoardComments['response'];

Я понял что ругается на topic_id и еще на что-то:
array(1) { ["error"]=> array(3)
["error_code"]=> int(100)
["error_msg"]=> string(78)

Полный ответ:
array(1) { ["error"]=> array(3) { ["error_code"]=> int(100) ["error_msg"]=> string(78) "One of the parameters specified was missing or invalid=> topic_id is undefined" ["request_params"]=> array(7) { [0]=> array(2) { ["key"]=> string(5) "oauth" ["value"]=> string(1) "1" } [1]=> array(2) { ["key"]=> string(6) "method" ["value"]=> string(17) "board.getComments" } [2]=> array(2) { ["key"]=> string(8) "group_id" ["value"]=> string(9) "131106281" } [3]=> array(2) { ["key"]=> string(5) "count" ["value"]=> string(2) "40" } [4]=> array(2) { ["key"]=> string(8) "topic_id" ["value"]=> string(0) "" } [5]=> array(2) { ["key"]=> string(10) "need_likes" ["value"]=> string(1) "0" } [6]=> array(2) { ["key"]=> string(4) "sort" ["value"]=> string(4) "desc" } } } }

Вот что за ошибки? Кто в API VK шарит?
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
26.10.2016, 11:34
PHP
1
2
3
$url = "https://api.vk.com/method/board.getComments?group_id={$GroupId}&count=40&topic_id={$board['tid']}&need_likes=0&sort=desc";
var_dump($url);
$GetBoardComments = json2array(file_get_contents($url));
0
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.10.2016, 22:00
Цитата Сообщение от smit1987 Посмотреть сообщение
["key"]=> string(8) "topic_id" ["value"]=> string(0) ""
Пустой параметр
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2016, 22:00
Помогаю со студенческими работами здесь

supplied argument is not a valid Image resource in
денвер пишет : Warning: imagecreatetruecolor() : Invalid image dimensions in Z:\home\pos.qwe\www\engine\classes\informer.php on line...

Warning: Missing argument 2 for module_url()
подскажите как исправить предупреждения? Warning: Missing argument 2 for module_url(), called in...

Warning: Invalid argument supplied for foreach() in
в чем ошибка код из книги ? <h2>HEADER</h2> <hr> <?php foreach($text as $item):?> <h2> <a...

Warning: Invalid argument supplied for foreach() in
Здравствуйте. Помогите с ошибкой разобраться: Warning: Invalid argument supplied for foreach() in Ошибки вот в этих строчках: foreach...

Warning: Invalid argument supplied for foreach() in
такая проблема Warning: Invalid argument supplied for foreach() in /..../файл.php on line 3656 3656 это первая строка как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru