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.
1Co 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 Public\Wordpress\Site\Post.php on line 670
Na przykładzie powyżej możecie zobaczyć, że problem pojawił się w pliku Post.php – dokładnie w linii 670.
2Rozwią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.
Jeżeli spotkaliście się z podobnymi błędami, lub innym rozwiązaniem to zachęcamy do komentowania.
Dzięki za pomoc w rozwiązaniu błędu Invalid argument supplied for foreach.
No tak tylko to nie jest rozwiązanie problemu, a po prostu nie uruchomienie się pętli. Jeżeli ktoś ma taki problem to powinien wziąć pod uwagę dlaczego dane otrzymane do pętli nie są w postaci obiektu/tablicy. Kto piszę pętle żeby zaraz mieć problem z tym że odbierane dane są ciągiem.
hej mi po zrobieniu tego wyskakuje zkolei:
[01-Aug-2018 17:04:50 UTC] PHP Notice: Undefined variable: values in /home/cgb0962447b/ftp/wp/wp-content/plugins/updraftplus/templates/wp-admin/settings/upload-backups-modal.php on line 14
Thanks for every other excellent post. The place else could anyone get that
kind of information in such a perfect method of writing? I’ve a presentation subsequent week, and I’m on the look for such info.
I pay a visit day-to-day some web sites and websites to
read articles or reviews, but this webpage provides feature based posts.