/ Programowanie / Rozwiązanie błędu – Invalid argument supplied for foreach.

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

Administrator , 10 grudnia 2015 - 20:54 w Programowanie

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.

blad invalid arguments php

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.

1 KOMENTUJ

Napisz Komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

1 Komentarze
  • 7 stycznia 2016

    Dzięki za pomoc w rozwiązaniu błędu Invalid argument supplied for foreach.

    Odpowiedz