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.
Hi Dear, are you really visiting this web page regularly, if so then you will without doubt take nice knowledge.