Rozwiązanie błędu – Invalid argument supplied for foreach
lechowski / 15.07.2021

Rozwiązanie błędu – Invalid argument supplied for foreach()

Częstym błędem pojawiającym się na stronach internetowych wykorzystujących składnię PHP, również tych opartych o WordPress jest błąd – Invalid argument supplied for foreach(). Zarówno przyczyna błędu, oraz rozwiązanie jest stosunkowo proste i wystarczy odrobina wiedzy zaczerpnięta z tego artykułu, aby pozbyć się komunikatu: Invalid argument supplied for foreach() na stronie internetowej.

Co oznacza błąd Invalid argument supplied for foreach() ?

Jeżeli zauważysz na swojej stronie internetowej błąd o wspomnianej już wcześniej treści, to prawdopodobnie zaszyta w kodzie pętla foreach próbuje operować na zmiennej, która niekoniecznie jest tablicą. Dzieje się tak dlatego, że programista nie przewidział takiej sytuacji – a dlaczego tak się stało, tego nie będziemy już dociekali.

Często razem z błędem pojawia się komunikat, w którym miejscu wystąpił problem, na przykład:

Warning: Invalid argument supplied for foreach() in

Na przykładzie powyżej możecie zobaczyć, że problem pojawił się w pliku Post.php – dokładnie w linii 670.

Rozwiązanie błędu Invalid argument supplied …

Rozwiązanie błędu Invalid argument supplied for foreach(), ogranicza się do edycji wskazanego pliku .php i zastosowanie dodatkowego warunku, który będzie sprawdzał, czy rzeczywiście mamy do czynienia z tablicą.

W tym celu warto wykorzystać bezpłatny edytor tekstu Notepad++, który koduje pliki w formacie UTF8-bez BOM. Należy pobrać z serwera plik, który stwarza problemy na dysk naszego komputera, otworzyć go w edytorze, a następnie uzupełnić o fragment:

if (is_array($values) || is_object($values))
{
…..
}

W puste miejsce wstawiamy fragment pętli, która stwarza problemy – ten fragment kodu rozpoczyna się słowem kluczowym foreach(…){…}.

Innymi słowy powinniśmy uzyskać coś podobnego do poniższego fragmentu:

if (is_array($values) || is_object($values))
{
foreach ($values as $value)
{
……
}
}

Tak przygotowany plik zapisujemy i wysyłamy z powrotem na serwer – błąd powinien zniknąć. Oczywiście przy eliminowaniu błędów tego typu przydaje się przynajmniej minimalna wiedza z zakresu programowania.