/ 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.

6 KOMENTUJ

Napisz Komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

6 Komentarze
  • 7 stycznia 2016

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

    Odpowiedz
    • 17 stycznia 2018

      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.

      Paweł
      Odpowiedz
    • 1 sierpnia 2018

      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

      Jakub
      Odpowiedz
  • 4 września 2019

    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.

    Odpowiedz
  • 13 września 2019

    I pay a visit day-to-day some web sites and websites to
    read articles or reviews, but this webpage provides feature based posts.

    Odpowiedz
  • 17 sierpnia 2020

    Hi Dear, are you really visiting this web page regularly, if so then you will without doubt take nice knowledge.

    Odpowiedz