Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak nie wykonywać pętli, gdy elementy są puste albo nie są tablicą
Forum PHP.pl > Forum > Przedszkole
glencun
Mam pytanie jak nie wykonywać takiej pętli:

  1. foreach($kor[0] as $n => $m) {


gdy elementy tej tablicy są puste albo nie są tablicą ?

Chodzi mi przede wszystkim o to, by nie wyświetlał się taki błąd:
Kod
Warning: Invalid argument supplied for foreach() in....



Dlatego myślę, że rozwiązaniem byłoby sprawdzanie czy te dane są tablicą, no chyba, że jest inne wyjście? Nie mam pomysłu..
cycofiasz
Jednak masz pomysł, czemu go nie zrealizujesz?
Smertius
is_array

ewentualnie możesz zrzutować zmienną na tablice

Mackos
ej no dajesz sobie prosty warunek:
  1. if(!empty($tablica)){
Smertius
Mackos, i w takim wypadku.

  1. $a ='jestem sobie stringiem';
  2.  
  3. if(!empty($a)){
  4. foreach($a as $val){
  5. }
  6. }
  7.  


Dostaniemy takiego samego warninga jak w pierwotnej wersji
glencun
No to teraz już zupełnie nic nie wiem w takim razie... tongue.gif
Smertius
Najprościej,bez żadnego kombinowania dodaj ifa przed twoją zmienną gdzie dasz jako warunek is_array($twoja_zmienna).

W tym rozwiązaniu które podał kolega wyżej, sprawdza tylko czy zmienna nie jest pusta, a nie czy jest tablica która może być użyta w pętli.
Dominis
sprawdz sobie najpierw czy zmienna istnieje(isset), a nastepnie czy jest tablica(is_array)

  1. if(isset($testArr) && is_array($testArr))
  2. echo 'Jestem tablica';
  3. else
  4. echo 'Nie istnieje, lub nie jestem tablica';
glencun
A nie powinno być || zamiast && ?
Dominis
&& oznacza i
musi zmienna istniec I byc tablica
andrew8666
Gdyby było "||", to wystarczy żeby jeden warunek był prawdziwy (tutaj praktycznie tylko isset), gdy jest "&&" to oba warunki muszą być prawdziwe.
cycofiasz
  1. if(isset($testArr) && is_array($testArr) && !empty($testArr))
  2. {
  3. foreach...
  4. }


Najpierw sprawdza czy zmienna istnieje, później czy jest typu tablicowego a na końcu czy nie jest pusta.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.