Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: VK API Warning: Invalid argument supplied for foreach()
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016
Помог: 0 раз(а)
Всем привет! Пытаюсь получить список комментариев из Обсуждений сообществ.
Чтобы не путались, приведу пример обсуждения: https://vk[dot]com/topic-47955426_27735839 (не реклама).
По плану, я вначале должен получить список обсуждений. Потом из них, получить список комментариев. Но что-то идет не так. Список обсуждений возвращается, а вот в комментах, строка: "foreach($GetBoardComments as $boardcomm)" - выдает целых 3 одинаковых ошибки:
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37 v37.myjino.ru/antispam_moe.php on line 94
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37 v37.myjino.ru/antispam_moe.php on line 94
Warning: Invalid argument supplied for foreach() in /home/users/k/k37v37/domains/k37 v37.myjino.ru/antispam_moe.php on line 94
Посмотрите плиз, кто поймёт, где засела ошибка?
2 дня уже ищу.
Значения:
tid (в списке обсуждений) - ID темы;
title (в списке обсуждений) - заголовок;
created_by (в списке обсуждений) - создатель.
id (в комментариях) - ID темы;
text (в комментариях) - заголовок;
from_id (в комментариях) - создатель.
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
smit, очевидно, что $GetBoardComments, передаваемый в цикл foreach не является массивом.
Можете проверить, что по ходу дела происходит с этой переменной. Например, используя var_dump($GetBoardComments); после 12-й, 13-й и 14-й строчек.
smit
Отправлено: 21 Октября, 2016 - 12:40:05
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016
Помог: 0 раз(а)
Sail пишет:
очевидно, что $GetBoardComments,
А что же это? Массив как массив. В скрипте, выше точно такой же код, но для стены - работает как надо.
Sail пишет:
var_dump($GetBoardComments); после 12-й, 13-й и 14-й строчек.
После 14 - точно NULL выдает. По одному, на каждую ошибку.
Другие - не смотрел.
smit
Отправлено: 23 Октября, 2016 - 15:05:44
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016
Помог: 0 раз(а)
ап
Мелкий
Отправлено: 23 Октября, 2016 - 15:29:34
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Что "ап"?
Всё уже сказано:
Sail пишет:
очевидно, что $GetBoardComments, передаваемый в цикл foreach не является массивом.
smit пишет:
После 14 - точно NULL выдает.
smit пишет:
А что же это? Массив как массив
NULL это не массив. NULL это NULL.
Судя по api.vk.com и отсутствию явной задержки - скорей всего flood control. Смотрите, что вам апи возвращает и проверьте свою обработку ошибок этого самого апи.
Кстати, у вас не указана версия апи. Через пару месяцев такие запросы работать прекратят.
----- PostgreSQL DBA
smit
Отправлено: 23 Октября, 2016 - 16:46:59
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016
Помог: 0 раз(а)
Мелкий пишет:
Sail пишет:
очевидно, что $GetBoardComments, передаваемый в цикл foreach не является массивом.
Так а что это, если не массив?
Мелкий пишет:
NULL это не массив. NULL это NULL.
Это здесь вообще к чему?
Мелкий
Отправлено: 23 Октября, 2016 - 16:53:34
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
smit пишет:
Так а что это, если не массив?
Так сами же написали, что var_dump($GetBoardComments); говорит NULL.
NULL так NULL, есть такой тип значений в PHP. И это не массив. Это NULL.
----- PostgreSQL DBA
smit
Отправлено: 23 Октября, 2016 - 17:06:01
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016
Помог: 0 раз(а)
Мелкий пишет:
Так сами же написали, что var_dump($GetBoardComments); говорит NULL.
NULL так NULL, есть такой тип значений в PHP. И это не массив. Это NULL.
Я понимаю что NULL - это такое значение.
Я не понимаю, почему $GetBoardComments - это не массив?
Мелкий
Отправлено: 23 Октября, 2016 - 20:01:57
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Вот теперь правильный вопрос.
Смотрим откуда эта переменная берётся.
Может здесь стать NULL? Да, может. В некоторых случаях может не быть даже пресловутого E_NOTICE. Sail об этом уже говорил, когда просил поставить var_dump после этой строки.
smit пишет:
$GetBoardComments = json2array(file_get_contents(
Может здесь быть NULL? Может, конечно. Вы же не привели листинг вызываемой функции.
И если функция отдаст NULL, то это как раз один из вариантов, когда последующая строка не даст даже E_NOTICE. И об этом Sail тоже сказал, предложив посмотреть var_dump сразу после этой строки.
Может ли одна и та же функция возвращать результат парой строк ранее и не возвращать тут? Может, разумеется. Даже если она не изменяет состояние системы, у неё есть как минимум 1 аргумент. Тем более поскольку этот аргумент напрямую зависит от внешней системы.
----- PostgreSQL DBA
smit
Отправлено: 26 Октября, 2016 - 01:09:31
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2016
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
smit пишет:
Вот что за ошибки?
Открываете вклонтактик в разделе для разработчиков и читаете. В отличии от некоторых, у них описание документации с реальностью обычно совпадает. А, только читать надо обязательно русскоязычное зеркало. Англоязычное - не соответствует действительности.
И включите error_reporting в нормальные E_ALL. Даже некоторых известных особенностей приведения типов не понадобилось, вы просто игнорируете E_NOTICE.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.