Skip to main content

Invalid argument supplied for foreach in помилка



…». Розробляючи свій код на PHP, програміст може зіткнутися з повідомленням про помилку «Invalid argument supplied for foreach in ...». Після цього повідомлення зазвичай слід вказівку на її конкретику, наприклад, «/modules/tasks/todo_tasks_sub.php on line 121». Помилка зазвичай обумовлена ​​специфікою наявного відрізка коду, і вимагає перевірки особливостей використання в ньому змінних. Давайте розберемо фактори появи помилки, і як її можна виправити.

Invalid-argument-supplied-for-foreach-in



Зміст статті:

Причини появи Invalid argument supplied for foreach

Вже згадана помилка зазвичай виникає в ситуації, коли змінна, яку foreach намагається виконати (повторити) не є масивом. Наприклад, ви передаєте в цикл не масив, а скаляр, або ви задійте подвійний масив, і забули визначити, як вибирається індекс.

Давайте припустимо, що ми маємо функцію з ім'ям get_user_posts. Ця функція повинна повертати масив коментарів користувача. Однак якщо коментарів немає, функція повертає логічне значення FALSE.

Приклад коду PHP
Приклад відрізка коду

У наведеному вище відрізку коду ми припустили, що змінна $ posts завжди буде масивом. Однак, якщо функція get_user_posts повертає логічне значення FALSE, то цикл foreach не працюватиме, і PHP виведе наступне повідомлення про помилку:



Warning: Invalid argument supplied for foreach () on line 7

Як же вирішити зазначену проблему? Давайте розбиратися.

Це цікаво: установка PHP 7.0.5 на Debian.



Як виправити помилку «Invalid argument supplied for foreach in»

Рішення залежить від того, для чого призначений ваш код. Тобто, якщо функція get_user_posts завжди повинна повертати масив, то, очевидно, вам необхідно з'ясувати, чому вона повертає логічне значення FALSE або значення NULL. Причиною цього може бути кілька речей:

  • Чи не вдалося оголосити порожній масив «за замовчуванням» (default);
  • Збій запиту до бази даних;
  • Масив перезаписується або скидається. Це часто відбувається в скриптах з великою кількістю масивів, коли можуть бути встановлені обмеження пам'яті, а розробник змушений скидати масиви, з якими він або вона закінчили роботу.

Переглядаючи будь-чию код, ми можемо зіткнутися з API і функціями, які повертають значення FALSE, коли результати відсутні. Якщо це так, то ви можете додати наступну перевірку в ваш код:

Проверка php-кода
Додаємо перевірку в наш код

Вище ми використовуємо функцію is_array, щоб перевірити, чи є $ posts масивом. І це ми робимо ДО того, як намагаємося зробити цикл його за допомогою конструкції foreach. Як ми вже писали, все залежить від того, яке призначення вашого скрипта. Додавання перевірки is_array нерозумно в ситуації, коли є питання про те, чи буде хмарно з масивом. Адже ви будете приховувати помилку, якої не повинно існувати.

Помилка в WordPress

Також розглянута помилка «Invalid argument supplied for foreach in» може з'являтися при роботі сайтів на WordPress. Проблема викликана тим, що WP_Block_Parser виконує кілька строкових маніпуляцій з substr () і strlen (), припускаючи, що вони працюють з одиночними байтами, а не з мультибайтних послідовностями.

Вирішити помилку Invalid argument supplied for foreach в WordPress допомагає зміна значення настройки mbstring.func_overload на 0 (зазвичай коштує 2). Збережіть зроблені зміни, і спробуйте перейти на проблемну раніше сторінку.

, и скопировать в аналогичную папку на вашем хостинге. Якщо це не допомогло, спробуйте завантажити Вордпресс 4.9.5, витягнути з нього папку wp-includes, і скопіювати в аналогічну папку на вашому хостингу. Після цього WordPress може запропонувати оновити ваші бази даних, погоджуйтеся, і все запрацює після очищення кеша.

Читайте також: множинні запити до xmlrpc.php в WordPress.

висновок

Помилка «Invalid argument supplied for foreach in ...» в коді PHP зазвичай викликана змінної, яка не є масивом. Останню намагається виконати foreach, але безуспішно. Для вирішення виниклої проблеми можна додати функцію is_array (вона перевірить, чи є змінна масивом). Також може порекомендувати загальний ознайомлювальний матеріал на сайті phpfaq.ru , де детально розібрано, як знайти помилку в створеному вами коді.



Як ви оціните статтю?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Поки оцінок немає)
Завантаження ...

Додати коментар

Ваш e-mail не буде опублікований.